一、从面试题开始
二、微服务概述
2.1 简介
all in one ——>one in one
模块独立(拆分),进程独立(独立),降低耦合(解耦)
服务之间通过restful接口调用,通过注册中心管理链接
2.2 微服务与微服务架构
微服务是模块,微服务架构是一种架构模式,多个微服务组成微服务架构。
2.3 微服务优缺点
2.4 spring cloud概述
2.5 spring cloud 与 dubbo
- 社区
spring cloud的社区活跃度优于dubbo -
技术
总结:商用软件稳定性大于一切。
三、微服务项目构建
四、Eureka
由server(eureka)与client(module)组成
- 服务注册中心,保存各个服务的节点信息;
- 维持心跳,超时(默认90秒)断开连接;
- 微服务故障,采取保护机制。
4.1 建立模块
4.11 server
访问配置ip:port可以查看注册的微服务
4.12 服务提供者
4.13 服务消费者
依赖和启动类与生产者相同
4.2 搭建集群
1.新建三个eureka模块7001,7002,7003
2.三个模块之间相互关联
7002关联7001和7003
7003关联7001和7002
4.3 eureka 与 zookeeper
商用软件稳定性大于一切,因此可用性更重要。
五、Ribbon
5.1 原理
5.2 编写
消费者消费的地址由指定变为服务集群,由客户端的ribbon来选择,做负载均衡。
5.3 实现
负载均衡三大算法:轮询,随机,权重
六、feign
6.1 原理
6.2 实现
七、Hystrix
7.1 熔断原理
7.2 熔断编码
hystrix针对一个服务消费端模块
7.3 降级原理
同一时间某一服务端访问非常多,hystrix会暂时熔断访问较少的服务,以保证主服务正常运行。
7.4 降级实现
服务降级即使服务已关闭依然可以运作。
7.5 熔断与降级的区别
熔断发生在服务端,某个服务出现异常,发生熔断。
降级发生在客户端,主动关闭某个服务,客户端接收到已经准备好的缺省值。
7.6 服务监控
监控
被监控
被监控服务添加依赖和servlet bean
八、Zuul
8.1 原理
功能包括:路由,代理,过滤
8.2 实现
可以通过 zuul服务的ip:port+指定服务端名+路径 来访问
添加服务端名称映射,屏蔽掉的原服务端路径,公共路径
zuul服务的ip:port+map映射名+公共路径+路径 进行访问
九、config
9.1 原理
9.2 实现-服务端
使用https
云端配置文件
方式一:config服务端ip:port/配置文件-配置模块.yml
方式二:config服务端ip:port/配置文件/配置模块/分支
获取配置文件内容
通过config 可以连接git 获取云端配置
9.3 实现-客户端
客户端配置文件上传到云端