服务架构演进
- 单体应用:一个项目发布一个服务.弊端:不断迭代开发,服务变得臃肿,不利于调试以及维护,任何一个bug可能就会导致整个服务宕机
- SOA架构:将各个模块划分为独立的服务模块.各模块间存在相互调用的依赖关系.为了减少各模块间的耦合,加入了ESB,各模块将服务发布到ESB中,他们与ESB间使用soap协议通信
- 微服务:将单体应用划分为小型的服务单元,微服务之间使用HTTP的API进行资源访问与操作
SpringCloud简介
- SpringCloud是一个工具箱,基于SpringBoot,它提供的各类工具可以帮我们快速构建分布式系统.将多个框架封装,并通过自动配置的方式绑定到spring容器中
SpringCloud模块
- Eureka:基于Rest服务的分布式中间件,用于服务管理
- Hystrix:容错框架
- Feign:Rest客户端
- Ribbon:负载均衡框架
- Zuul:为集群提供代理,过滤,路由
- SpringCloud config:管理集群中的配置
- SpringCloud Sleuth:服务跟踪框架
- SpringCloud Bus:集群消息总线
Eureka组件
-
Eureka提供基于REST的服务,在集群中主要用于服务管理.Eureka提供了客户端组件,实现了客户端的负载均衡,可以将业务组件注册到Eureka容器中,Eureka主要维护这些服务的列表并自动检测他们的状态
-
Eureka架构图
-
服务器端
对于注册到服务器的组件,Eureka服务器没有提供后台的存储,而是被保存在内存的注册中心,通过心跳机制保持其最新状态 -
服务提供者
1.向服务器注册服务
2.向服务器获取注册列表
3.发送心跳给服务器 -
服务调用者
发现和调用服务