这是我参与「第五届青训营 」伴学笔记创作活动的第7天
一、课程主要内容:
- 什么是架构:架构的定义和演进为具体内容;
- 企业级后端架构剖析:介绍企业级后端架构的形态有哪些;
- 后端架构的挑战:企业级架构都面临着哪些挑战;
- 如何做架构设计:第三部分中的一个例子;
二、详细知识罗列:
- 架构的定义是什么?架构又称软件架构,是有关软件整体结构与组件的抽象描述,可用于指导软件系统各个方面的设计;架构有什么作用,软件的架构就相当于一栋楼房的地基,架构没设计好,软件容易崩,用户体验上不去。最终要么重构,要么放弃;架构设计好了,软件的稳定性上去了,用户体验高了,口碑一点点就打造出来了;良好的架构基础,也为软件的未来发展提供了更多的可能。为用户赋能,实现自身价值。
- 架构的分类:单机架构: 指所有的东西都在一个进程里,部署在一个机器上,这个就相当于我们自己写的小程序,所有东西都在自己的一台计算机上;单体架构:在单机架构的基础上,将进程部署到多个机器上;垂直应用架构在单机架构基础上,将进程按照某种依据切分开。比如,A 软件和 B 软件的后端原先采用单机架构部署,那就是一个进程部署在多个机器上;如果用垂直应用架构,可以将 A 和 B 的后端拆分为 A、B 两个进程,然后再按照单体模式的思路,部署在多个机器上。但这个没有根本解决单体架构的问题;SOA面向服务架构: 将进程按照不同的功能单元进行抽象,拆分为『服务』。有了服务之后,SOA 还为服务之间的通信定义了标准,保证各个服务之间通讯体验的一致性。最后就是微服务,这是面向服务架构的最终演进形态;
- 云计算相关:虚拟化技术(虚拟机、容器)和编排方案;云计算架构包括云服务(IaaS,PaaS,SaaS,FaaS)、云部署模式;
- 什么是微服务架构? 微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。 微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。
微服务架构的优点
- 灵活性高:它将应用程序分解为小型服务(松散耦合),使其开发、维护更快,更易于理解,可以提供更高的灵活性;
- 独立扩展:它使每个服务能够独立扩展,将系统中的不同功能模块拆分成多个不同的服务,这些服务进行独立地开发和部署,每个服务都运行在自己的进程内,这样每个服务的更新都不会影响其他服务的运行;
- 支持多种编程语言:微服务可通过最佳及最合适的不同的编程语言与工具进行开发,能够做到有的放矢地解决针对性问题;
- 自动部署与持续集成工具集成:它允许以灵活的方式将自动部署与持续集成工具集成,例如Jenkins,Hudson等;
- 通用性:通过服务实现应用的组件化(按功能拆分、可独立部署和维护),围绕业务能力组织服务,根据业务不同的需求进行不同组件的使用,所做产品非项目化,对于平台具有一定的通用性。