微服务架构
单体地狱:
随着时间推移,项目越来越庞大臃肿,共享资源变得非常困难,可能一个内存泄漏就会导致整个项目无法运行.维护这些代码也将变得非常困难,技术换代时间成本巨大.
什么是微服务
每一个微服务是一个迷你应用,一个微服务会暴露其他微服务或者客户端消费的api,每个实例通常是一个云虚拟机或Docker容器.
微服务特点
-
单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
-
微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
-
独立:自治是说服务间互相独立,互不干扰
- 团队独立:每个服务都是一个独立的开发团队,人数不能过多
- 技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
- 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动端开发不同接口
- 数据库分离:每个服务都使用自己的数据源
- 部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护
SpringCloud
>>什么是SpringCloud?
SpringCloud将现在非常流行的一些技术整合到一起,因为它不是一个组件,而是许多组件的集合,实现了诸如:
- 配置管理
- 服务发现
- 智能路由
- 负载均衡
- 熔断器
- 控制总线
- 集群状态
- …
主要涉及的组件包括
- 以下链接:
- Eureka: 注册中心
- Ribbon: 负载均衡
- Hystrix: 熔断器
- Feign: 远程服务调用
- [Zuul: 服务网关-未发布]