这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
课程主要学习了与软件架构相关的知识:
1. 软件架构
2. 企业级后端架构剖析
3. 企业级后端架构挑战
注:笔记图片来自课程截图,如有侵权,请联系删除
1.软件架构
架构,又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。实现软件的方法很多,架构在方法选择上起着至关重要的指导作用。
架构有以下几种类型:
- 单机架构把所有功能实现在一个进程,并且部署在一台机器上。简单但是运维需要停服。
- 垂直应用架构按应用垂直切分形成多个单体进程,部署在多个机器上,并对外提供服务。水平扩容解决了单体架构运维停服问题,但是每个服务器职责还是太多,效率不高。
- SOA架构将用用不同功能单元抽象为服务,定义服务之间的通信标准。为了服务之间更好通信,有两大发展方向,中心化和去中心化。
- 微服务架构就是SOA去中心化的演进方向。但都存在数据一致性、高可用、治理、解耦等问题。 演进思路是伴随着项目的逐渐庞大进化的,包括垂直切分以及水平切分。
2.企业级架构剖析
云计算
云计算是指通过软件自动化管理,提供计算资源的服务网络。服务模式包括Iaas、Paas、SaaS、Faas。
- IaaS基础设施服务是指把IT基础设施作为一种服务通过网络对外提供。在这种服务模型中,用户不用自己构建一个数据中心,而是通过租用的方式来使用基础设施服务,包括服务器、存储和网络等。
- Paas平台服务是云中的完整环境,其资源使组织能够提供从简单的基于云的应用到复杂的支持云的企业应用程序的所有内容 -SaaS软件运营服务按某种服务水平协议(SLA)直接通过网络向专门的提供商获取自己所需要的、带有相应软件功能的服务
- FaaS功能服务是一种在无状态容器中运行的事件驱动型计算执行模型,这些功能将利用服务来管理服务器端逻辑和状态。
云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用
提供了可能。
3.企业级架构挑战
挑战:基础设施方面物理资源是有限的,资源利用率受制于部署服务;用户方面网络通信开销大,容易网络抖动,异构环境不同实例资源水位不均。
因此采用了一些解决办法:离在线资源并池降低物理资源成本、自动扩缩容降低业务成本、微服务亲合性部署提高服务可用性、流量治理提高微服务调用容错性、CPU水位负载均衡打平异构环境算力差异,为自动扩缩容提供正向输入。
总结
学习了如何设计架构:需求先行、业界调研、技术选型、异常情况。