什么是微服务架构
将单个应用拆分成多个 微小独立的服务单独部署,每个小服务都在自己的进程中运行,并使用轻量级协议(HTTP)进行通讯,这些服务是小型构建模块,高度解耦,专注完成一项小任务,是一种便捷的模块化系统构建方法。
微服务架构的优缺点
微服务优点
- 开发简单
- 技术栈灵活
- 协议简单
- 服务独立无依赖
- 独立按需扩展
- 可用性高
- 高伸缩性
- 易于维护单一服务
微服务缺点
- 架构复杂
- 多服务运维难度
- 系统部署依赖
- 服务通讯成本
- 数据一致性
- 系统集成测试
- 重复工作
- 性能监控
微服务的典型应用场景
四大典型案例公司
淘宝 支付宝 微信 微博
典型场景
社交 电商 游戏 导航 聊天 搜索 IOT等
淘宝微服务结构体系
微服务架构的常见RPC协议
微服务常用通信模式
- 同步
- 异步
- 混合
经典RPC协议
- HTTP/REST
- TCP
- UDP
- Dubbo
- Netty
- RMI
- Hessian
- gRPC
...
微服务常用的通信协议与框架中间件
同步调用
- HTTP/REST
- REST
- RPC
异步调用
- AMQP
- 消息队列(ActiveMQ,RabbitMQ,Kafka)
微服务架构的经典开发框架
- Java Spring Cloud:java开源微服务框架方案
- Dubbo:阿里巴巴开源服务治理框架
- Spring Cloud Alibaba:阿里开源java微服务框架方案
- SOFA:蚂蚁金服开源java金融微服务框架方案
- Go Micro:go语言开源微服务框架
- Seneca Microservices:Node.js微服务框架
- KumuluzEE: Java的微服务框架
- Enduro/x:c/c++/Go
微服务框架的对比
总结:spring cloud 微服务生态最完善,最成熟
SpringCloud 微服务架构图
Spring Cloud微服务架构方案
微服务框架体系
微服务架构的设计策略
微服务的设计原则
- 需求第一
- 单一职责
- 粒度适中
- 协议统一
- 独立开发
- 独立部署
微服务拆分原则
- 按照业务模块拆分
- DDD思路
- 单一职责
例如:电商架构设计
账号模块 商品模块 订单模块 评论模块...
微服务架构设计考量
- 微服务拆分
- 微服务高可用
- 微数据安全
- 微服务数据同步
- 微服务监控
评论区