系统架构设计
在应用系统的内部,如何根据业务、技术、组织、灵活性、可扩展性以及可维护性等多种因素,将应用系统划分成不同的部分,并使这些部分彼此之间相互分工、相互协作,从而为用户提供某种特定的价值的方式。
微服务架构
原因
三层架构存在很多弊端,不满足业务发展的需求
三层架构
表示层、业务逻辑层、数据访问层(只是逻辑分层不是物理分层,所有代码还在同一个进程中运行,只是单层架构)
单跨架构
优点:易于开发,易于测试,易于部署,易于水平伸缩
缺点:维护成本大,持续交付时间长,新人培育时间长,技术选型成本高,可扩展性差
概念
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
特性
1、单一职责
2、轻量级通信:服务之间通过轻量级(指语言无关、平台无关的交互方式)的通信机制实现互通互联
3 、独立性:每个服务都是独立的业务单元,与其他服务高度解耦,只需要改变当前服务本身,就可以完成独立的开发、测试和部署。
4、进程隔离:不同服务可以部署在不同主机上
挑战
1、分布式系统的复杂性(性能,可靠性,异步,数据一致性
2、运维成本:每个服务都需要独立地配置、部署、监控和收集日志
3、自动化部署:每个服务都独立部署,交付周期短且频率高,人工部署已经无法适应业务的快速变化
4、DevOps与组织架构;开发人员和运维人员的角色发生了变化,开发者将承担起整个服务的生命周期的责任,包括部署和监控;而运维则更倾向于顾问式的角色,尽早考虑服务如何部署。因此,按需调整组织架构、构建全功能的团队。
5、服务间依赖测试
6、服务间依赖管理