各种系统架构的简单介绍

一.单体架构

各种系统架构的简单介绍

       初创小公司,前期可能只有2-3个开发人员。为了节省成本,并希望项目快速开发,快速发布上线,快速验证市场,这个时候就可以考虑采用单体架构进行开发。

所谓单体架构,就是系统服务及数据库等都放在同一台服务器上。

单体架构的优点是:
小团队成型即可完成开发-测试-上线,而且迭代周期短,速度快,打包方便,运维省事。
是初创小公司业务发展初期最理想的架构形式。

二.集群架构

各种系统架构的简单介绍

       当业务不断发展壮大,用户访问量不断增加,单体架构往往会因为负载越来越高,从而面临越来越多的挑战。比如:系统的承载量可能会越发乏力,逐渐成为性能瓶颈;单节点宕机可能造成所有服务不可用等等,面对突如其来的一系列问题,我们该如何切入?

我们可以通过Nginx负载均衡, 双机主备与主从热备,降低服务器负载压力;
通过Redis缓存集群为数据库减压等解决方案,逐步演变系统成一个高可用的集群架构。

三.分布式架构

各种系统架构的简单介绍

       随着业务发展壮大,用户量暴涨,单节点处理能力就会成为瓶颈,如果并发量居高不下,服务器很容易因负载过高而导致崩溃宕机。出于高并发,高可用的考虑,项目就应该演变到分布式架构了。
然而分布式环境下我们又会面临更多的挑战需要去应对。比如:

  1. 如何保障不论用户请求落在哪个服务节点,文件都能被获取到?
  2. 如何对上下游弱依赖关系的服务节点做解耦?
  3. 如果日志分布在不同的服务上,如何为后续的业务提供数据支撑?
  4. 如果一个资源在同一个时间节点上,产生了竞争该怎么办?
  5. 如果用户量暴增,导致每次查询时间慢了许多该怎么办?
  6. 如果下单、付款分布在不同的服务上,如何保证跨服务事务?

四.微服务架构

各种系统架构的简单介绍

       随着发展,系统越来越复杂,如果分布式架构无法满足业务要求,可以尝试微服务架构。不过它也有自己的利弊,需要更深入的掌握微服务技术才好更灵活的权衡利弊。
如下问题都是微服务下需要思考和解决的问题:

  1. 如何做好服务登记工作?
  2. 接口异常超时怎么破?如何确保核心主链路的高可用性?
  3. 如何对配置项进行中心化的管理?如何在运行期刷新配置项?
  4. 如何设置网络请求转发规则?
  5. 如何根据蛛丝马迹进行线上异常排查?
  6. 如何无缝对接消息中间件?