这是我参与「第五届青训营 」笔记创作活动的第3天。
一、本堂课重点内容:
学习什么是架构,对架构有个初步了解。学习企业级后端架构的形态,并且了解企业级架构面临着的挑战以及解决方法。最后结合所学内容,讲解如何做架构设计。
二、详细知识点介绍:
(1)什么是架构
架构,又称为软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。实现一个软件有很多种方法,架构在方法选择上起着至关重要的作用。
单机架构就是把所有功能都实现在一个进程里,并部署在一台机器上。
垂直应用架构:按应用垂直切分的单体。可以水平扩展,运维不需要停服。
SOA(service oriented architecture)面向服务的架构,将应用的不同功能单元抽象服务,定义服务的通信标准。
微服务架构就是SOA的去中心化演进方向。
(2)企业级后端架构剖析
云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
云原生技术为组织在公有云、自由云、混合云、等新型动态环境中,构建和运行可弹性拓展的应用提供了可能。
弹性计算资源类型包括服务资源调度,计算资源调度,消息队列。
DevOps是云原生时代软件交付的利器,贯穿整个软件开发时期,结合自动化流程,提高软件开发、交付效率。
云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。
服务网络是微服务之间通讯的中间层,高性能网络代理以及业务代码与治理解耦。
(3)企业级后端架构的挑战
基础设施层面的挑战有物理资源是有限的,资源利用率受制于部署服务。用户层面的挑战包括网络通信开销较大,网络抖动导致运维成本提高,异构环境下,不同实例资源水位不均。
离在线资源并池可以降低物理资源成本,提供更多的弹性资源,增加收入。
自动扩缩容,利用在线业务潮汐性自动扩缩容,可以降低业务成本。
微服务亲和性部署,降低业务成本,提高服务可用性。
基于微服务中间件和服务网格的流量治理可以提高微服务调用容错性,进一步提高开发效率。
CPU水位负载均衡可以打平异构环境算力差异,为自动扩缩容提供正向输入。
(4)后端架构实战
自适应动态权重的方案为采集宿主机物理资源信息,调整容器注册的权重。它的优势为复杂度低,完全分布式,可用性高,微服务中间件无适配成本。缺点为无紧急回滚能力,缺乏运行时自适应能力。
三、课后个人总结:
需求先行,弄清楚要解决什么问题。业界调研,业界都有哪些解决方案可供参考。技术选型,内部/社区都有哪些基础组件。异常情况,考虑清楚出现异常该怎么办。
把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。