微服务
什么是微服务
微服务是一种架构风格或者是架构模式。提倡将单一的应用程序划分成一组小的服务。(将一站式应用,拆分成一个一个服务,彻底的解耦)
微服务的优点
1、开发简单,开发效率高,一个服务可能只干一件事情。
2、微服务能够被小团队单独开发。
3、微服务能使用不同的语言开发
4、服务间是松耦合的,在开发和部署阶段都是独立的。
微服务的缺点
1、开发人员要处理分布式系统的复杂性
微服务架构的核心问题
1、服务很多,客户端该怎么访问?
2、多个服务间如何通信?
3、这么多服务,如何治理?
4、服务挂了怎么办?
解决方案
1、Spring Cloud NetFlix 一站式解决方案
api 网关 (zuul组件)
Feign ---HttpClient ---Http通信方式(特点:同步,阻塞)
服务注册发现:Euraka
熔断机制:Hystrix
2、Apache Dubbo Zookeeper 半自动,需要整合第三方
没有api网关,找第三方组件,或者自己实现。
通过Dubbo通信 (Dubbo 基于java开源,高性能 RPC通信框架)
Zookeeper
没有熔断机制:借助 Hystrix
PS:Dubbo方案并不完善
3、Spring Cloud Alibaba 一站式解决方案,更简单
总结-解决问题:
1:API 网关(解决服务路由问题)
2:通信问题(HTTP,RPC)
3:注册发现(解决高可用)
3:熔断机制(服务降级,雪崩问题)
微服务的优点:
1、职责单一
2、是松耦合的,开发和部署阶段都是独立的
3、可以使用不同语言来开发
4、易于理解,修改和维护
微服务的缺点:
1、开发人员要处理分布式系统的复杂性
2、增加服务间的通信成本
3、系统部署依赖(部署顺序依赖等)
4、数据一致性问题
5、系统集成测试