软件架构
在软件的内部,经过综合各种因素的考量、权衡、选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值。
复制代码
- 哪些因素:业务需求、技术栈、成本、组织架构、可扩展性、可维护性(时间成本)
- 软件架构进化之个人经历:一层架构、MVC、dubbo
- 单体架构:功能、业务集中在一个发布包里,部署运行在同一个进程中。优势:易于开发、测试、部署、水平伸缩。缺点:代码膨胀,难以维护;构建,部署成本大;新人上手困难;创新困难;可扩展性差
微服务
使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化方式部署。
复制代码
- 微服务的特征:单一职责(订单支付)、轻量级通信、隔离性、有自己的数据、技术多样性。
- 微服务背景:互联网的快速发展、敏捷开发,精益方法深入人心、容器技术的成熟。
微服务架构图
微服务的优势和不足
优势:独立性、敏捷性、技术栈灵活、高效团队
不足:额外的工作(拆分)、数据一致性(多数据库)、沟通成本(API改变)
复制代码
转载于:https://juejin.im/post/5d0233a46fb9a07ecb0ba353