微服务
使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署。
特征
- 单一职责
- 轻量级通信
- 隔离性
- 有自己的数据
- 技术多样性
背景
- 互联网行业的快速发展
- 敏捷开发,精益方法深入人心
- 容器技术的成熟
场景
假定业务场景
- 一个在线教育的网站部分功能
- 用户可以登录注册,获取用户信息
- 有发送邮件发送短信的功能
- 可以查看课程列表和对课程有基本CRUD
优势
- 独立性
- 敏捷性
- 技术栈灵活
- 高效灵活
劣势
- 额外的工作 (服务拆分)DDD
- 数据一致性
- 沟通成本
- 维护成本
微服务架构引入的问题及解决方案
服务间通讯
通讯模式
一对一 | 一对多 | |
---|---|---|
同步 | 请求响应模式 | —— |
异步 | 通知/请求异步响应模式 | 发布订阅/发布异步响应 |
通讯协议
- Rest API
- RPC
- MQ
RPC框架
参考内容
- I/O、线程调度模型
- 序列化方式
- 多语言选择
- 服务治理
类别
- Dubbo
- Motan
3. Thrift
4. GRPC
区别
服务间如何发现彼此
- 客户端发现
2.服务端发现
服务怎么部署/更新/扩容
-
Mesos
-
Docker Swarm
-
Kubernetes