携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情
微服务架构4个核心问题
- 服务很多,客户端该怎么访问?
- 这么多服务,服务之间怎么通信?
- 这么多服务,如何治理?
- 服务挂了怎么办?
解决方案:
Spring Cloud 是什么: 生态!
1.Spring Cloud NetFilix 一站式解决方案!
api网关,zuul组件
Feign ---HttpClient --- Http通信方式,同步,阻塞
服务注册发现:Eureka
熔断机制:Hystrix
2.Apache Dubbo Zookeeper 半自动,需要整合别人的
3.Spring Cloud Alibaba 一站式解决方案!更简单
新服务:服务网格 Server mesh
万变不离其宗
- API
- HTTP、RPC
- 注册和发现
- 熔断机制
根本原因:网络不可靠!
1、微服务架构
优点:
- 单一职责原则
- 每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;
- 开发简单,开发效率提高,一个服务可能就是专一的只干一件事;
- 微服务能够被小团队单独开发,这个小团队是2~5人的开发人员组成;
- 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
- 微服务能使用不同的语言开发。
- 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如jenkins,Hudson,bamboo
- 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
- 微服务允许你利用融合最新技术。
- 微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面混合
- 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库
缺点:
- 开发人员要处理分布式系统的复杂性
- 多服务运维难度,随着服务的增加,运维的压力也在增大
- 系统部署依赖
- 服务间通信成本
- 数据一致性
- 系统集成测试
- 性能监控