这是我参与「 第五届青训营 」伴学笔记创作活动的第 6 天
以下是我学习到的知识,来做个分享。如果错误,请大家帮忙指出。
一、架构是什么
术语讲,架构(软件架构)是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个组件涉及到的各个方面的设计。通俗来讲,架构就是软件如何设计的策略,架构不是软件!
常见的软件架构:
单机
所有的东西都在一个进程里,部署到一个机器上。
优点:简单;
缺点:承载力有限,运维需要停服,用户体验较差;
单体
在单机的基础之上,将进程部署到了多个机器上。
优点:有水平扩容能力,运维也不需要停服;
缺点:后端臃肿,危险系数大,一个很小的模块出现了问题就会导致整个都崩溃。
垂直应用
在单机架构基础上,将后端按照某个依据切成几个进程,然后按照单体模式的思路,部署到多个机器上。
优点:减少后端负担,危险系数下降
缺点:没有解决单体架构根本问题
SOA(面向服务架构)
将进程按照功能单元进行拆分为“服务”
优点:各职责更清楚
缺点:ESB需要一整套解决方案
微服务
SOA分布式演进的分支,最终的形态就是微服务。
优点:服务间的通信更敏捷、灵活
缺点:运维成本高
架构的重要性:
如果我们想要盖个房子,那么最重要的就是地基了。架构就相当于地基,架构设计好,软件才不容易崩溃,稳定性有了保证,才能让用户有更好的体验。
二、企业级后端架构剖析
微服务架构
微服务架构下,服务之间的通讯标准是基于协议的。
那么对于HTTP和RPC之间要怎么选择呢?
1.性能:RPC协议往往具备较好的压缩率,性能较高。
2.服务治理:RPC中间件往往集成了丰富的服务治理能力。比如:熔断、降级和超时等。
3.可解释性:HTTP通信的协议往往首选JSON,可解释性、可调试性更好。
三、总结
学好架构真的很重要,就像房子必须要盖好地基一样。做架构一定要先从需求出发,之后结合实际调研,认清需求,选好成熟的技术,做好容灾能力。学到了很多!