初识架构 | 青训营笔记

118 阅读2分钟

这是我参与「 第五届青训营 」伴学笔记创作活动的第 6 天

以下是我学习到的知识,来做个分享。如果错误,请大家帮忙指出。

一、架构是什么

术语讲,架构(软件架构)是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个组件涉及到的各个方面的设计。通俗来讲,架构就是软件如何设计的策略,架构不是软件!

常见的软件架构:

单机

所有的东西都在一个进程里,部署到一个机器上。

优点:简单;

缺点:承载力有限,运维需要停服,用户体验较差;

单体

在单机的基础之上,将进程部署到了多个机器上。

优点:有水平扩容能力,运维也不需要停服;

缺点:后端臃肿,危险系数大,一个很小的模块出现了问题就会导致整个都崩溃。

垂直应用

在单机架构基础上,将后端按照某个依据切成几个进程,然后按照单体模式的思路,部署到多个机器上。

优点:减少后端负担,危险系数下降

缺点:没有解决单体架构根本问题

SOA(面向服务架构)

将进程按照功能单元进行拆分为“服务”

优点:各职责更清楚

缺点:ESB需要一整套解决方案

微服务

SOA分布式演进的分支,最终的形态就是微服务。

优点:服务间的通信更敏捷、灵活

缺点:运维成本高

架构的重要性:

如果我们想要盖个房子,那么最重要的就是地基了。架构就相当于地基,架构设计好,软件才不容易崩溃,稳定性有了保证,才能让用户有更好的体验。

二、企业级后端架构剖析

微服务架构

微服务架构下,服务之间的通讯标准是基于协议的。

那么对于HTTP和RPC之间要怎么选择呢?

1.性能:RPC协议往往具备较好的压缩率,性能较高。

2.服务治理:RPC中间件往往集成了丰富的服务治理能力。比如:熔断、降级和超时等。

3.可解释性:HTTP通信的协议往往首选JSON,可解释性、可调试性更好。

三、总结

学好架构真的很重要,就像房子必须要盖好地基一样。做架构一定要先从需求出发,之后结合实际调研,认清需求,选好成熟的技术,做好容灾能力。学到了很多!