架构学习
1.概念认识
- 软件架构
在软件的内部,考虑综合因素,选特定的技术,将系统划分不同部分,不同模块,并且相互分工和协作 的 一种方案
综合因素有:业务需求,技术栈,成本,组织结构,可扩展性,可维护性
- 单体架构
业务功能都集中在一起,部署运行在同一进程中或机器中
优:易开发,已测试,易部署,易水平伸缩
缺:代码膨胀,难维护(bug分析定位修复成本高,代码量大的时候,开发人员对全局功能了解也非常缺乏,牵一发而动全身,修复这个bug引起其他bug,恶性循环,维护困难)
部署成本大,创新差,难扩展,新人上手难
- 微服务
多微才算微?
- 代码量?
- 开放时间?
- 不可度量 传递的是一种设计思路与思想
微服务的特征
- 单一职责
- 轻量级通信
- 隔离性
- 有自己的数据
- 技术多样性
单体架构:
微服务:
微服务优势
- 独立性
- 敏捷性
- 技术栈灵活
- 高效团队开发
微服务不足
- 额外工作,拆分 (DDD了解一下)
- 数据一致性
- 沟通成本
2.引入微服务带来的问题与解决方案
- 微服务之间如何通讯?
从通讯模式角度考虑:
一对一还是一对多?
同步还是异步?
从通讯协议角度考虑:
Restful api
RPC
MQ如何选择rpc框架
- 微服务如何发现彼此?
传统服务
> 微服务发现
- 微服务怎样部署?更新?扩容?
服务编排