一、架构定义解析
架构是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。简单来说,架构相当于一个软件的地基,是从众多方法中选择出来的一种实现程序功能的方法。
单机架构:把所有功能都实现在一个进程中,并部署在一个服务器中,例如一个个体作坊既承担制作蛋糕的任务,也承担售卖蛋糕的任务。优点是结构简单;缺点是运维时需要停服务器,也就是如果这个进程出现了问题,软件就只能停摆。
单体、垂直应用架构:将不同的任务分配给不同的人去完成,例如蛋糕店里有人负责卖蛋糕,有人负责做蛋糕,并且不止一个师傅在做蛋糕,即使有一位师傅出现了问题,依旧不影响整个店铺的正常运转。优点是水平扩容,运维时不需要停服;缺点是职责太多的话开发效率不高,爆炸半径大。
SOA、微服务架构:SOA架构是指将应用的不同功能单元抽象为服务,定义服务之间的通信标准,微服务架构是SOA的去中心化演进方向。例如蛋糕店将责任进一步划分,有人负责和面,有人负责烤面包,有人负责撒料,有人负责售卖等等。但是这种职能细分还是有一些缺点,第一点在于数据的一致性难以统一,进程过多难以形成有效的合作,运行维护成本过高等等。
架构的演进初衷好比做蛋糕,需求量越来越大,所以要不断增加人手,越做越复杂,所以要分工合作。
架构的演进思路就像切蛋糕,蛋糕越做越大,终究要切分,这里可以选择横着切或者竖着切。
二、企业级后端架构剖析
1. 云计算
云计算是指软件自动化管理,提供计算资源的服务网站,是现代互联网大规模熟悉分析和存储的基础。云计算的基础包括虚拟化技术和编排方案。
云计算架构:
- IaaS:自己搭建服务器或者租赁云服务器。
- Paas:清包或者全包
- SaaS:从零开始或者雇佣有经验的人
- Faas:单个生产或者批量生产
2. 云原生
云原生技术为公司在公有云,自由云,混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
弹性计算资源类型:
- 服务资源调度:包括微服务和大服务。
- 计算资源调度:包括在线调度和离线调度。
- 消息队列:分为在线(削峰和解耦)和离线(大数据分析)。
弹性存储资源类型:
- 经典存储:对象和大数据
- 关系型数据库
- 元数据存储
- NoSQL:Key—Value
DevOps: 云原生时代软件交付的利器,贯穿整个软件的开发周期。可以通过结合自动化流程,提高软件开发,交付效率。
微服务架构:
- 通信标准:HTTP和RPC
- 微服务器中间件:性能,服务治理,协议可解释性
云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。
三、其他知识与小结
后端架构的基本概念,包括软件架构、系统设计、网络通信等;
后端架构的关键技术,如云计算、微服务、服务器端渲染等;
后端架构的最佳实践,如性能优化、安全设计、可扩展性等。
通过这些学习,我对后端架构有了更为全面和深入的理解。我认识到后端架构在软件开发中的重要性,它决定了系统的性能、稳定性、可维护性和可扩展性。
在学习过程中,我收获颇丰。我不仅掌握了后端架构的基本知识和技术,还理解了如何在实际项目中应用这些知识和技术。此外,我也认识到自己在后端开发方面还有许多需要进一步提高的地方,如性能优化、安全设计等。
回顾我的学习过程,我认为我在以下几个方面有待改进:
需要加强在实际项目中使用后端架构知识的实践能力;
需要提高在性能优化、安全设计等方面的专业技能;
需要更加注重与团队成员的沟通合作,提高团队协作能力。
展望未来,我希望能够在后端开发领域继续深入学习和实践。我计划在未来的项目中应用所学知识,提高自己的实践能力,并为团队提供更有价值的贡献。同时,我还将积极参加相关技术研讨会和培训,与行业内的专业人士交流学习,不断提升自己的专业技能和认知水平。
总之,今天的学习让我对后端架构有了更为深入的理解和认识。我相信,在未来的学习和实践中,我会成为一名更优秀的后端开发工程师。