一、什么是微服务
1、微服务架构是一种架构思想,架构就是为了解耦,实际的开发方式采用分布式系统开发。
2、业务领域定义了边界,可以参考DDD (领域驱动设计),如何划分领域?
3、系统架构需要遵循的三个标准:
(1)提高敏捷性:及时响应业务需求,促进企业发展(CAP)
(2)提升用户体验:提升用户体验,减少用户流失
(3)降低成本:降低增加产品、客户或业务方案的成本
二、微服务架构
1、单体开发架构
2、微服务架构
三、微服务实践
1、这么多服务,客户端如何访问?
统一的入口,通过API网关
2、这么多服务,如何通信?
两种
1、同步 对内RPC,对外 REST,json序列化两次,需要先转成json字符串,在将json字符串转二进制
1.1 HTTP ->跨防火墙
1.2 RPC -> 传输效率高,压缩,通过序列化,反序列化技术对数据进行压缩
2、异步
2.1 消息队列
3、这么多服务,如何治理?
服务注册与发现服务注册中心,服务IP列表
4、这么多服务,服务挂了怎么办?
网络是不可靠
(1)重试机制
(2)限流
(3)熔断机制(保险丝,超时断开,从而保证服务器不奔溃,限制并发量)
(4)负载均衡
(5)降级(本地缓存,保证主核心业务)
四、微服务的设计
客户端发现模式使用的是zookeeper,服务端发现模式使用的是eureka
1、聚合器微服务设计模式
2、代理微服务设计模式(API网关)
3、链式微服务设计模式
4、分支微服务设计模式
5、数据共享服务设计模式
6、异步消息传递微服务设计模式(消息队列)
五、新架构新起点(有道无术,术尚可求,有术无道,止于术)
对于微服务架构,最重要的是思维的转变,技术不是问题,思想才是王道,对于做微服务开发的几点建议:
1、应用程序的核心是业务逻辑,按照业务或客户需求组织资源(这是最难的)
2、做有生命的产品,而不是项目
3、全栈化
4、后端服务贯彻Single Responsibility Principle (单一职责原则),一个类只做一种事,一个方法只做一件事
5、VM->docker->kubernetes->lstio
6、DevOps(自动化运维),AI DevOps(智能自动化运维)