Java综合知识——单元化高可用架构演进历程

1.1.1 单元化高可用架构演进历程

一、基本概念

1.什么是单元化?

所谓单元,是指一个能完成所有业务操作的自包含集合,在这个几乎中包含了所有业务所需的所有服务,以及分配给这个单元的数据。

假如一个业务有30亿数据,采用单元化架构部署的话,我们可以把数据拆解为3份,每份10亿数据,建立3个单元,这三个单元,业务服务一模一样,但是数据库存储的数据不同,分别是10亿数据。

这里根据数据进行单元的拆分,数据需要具备可拆分的属性,比如用户ID等全局唯一标识信息,否则无法拆分单元。

上面拆解的单元其实是逻辑单元的概念,逻辑单元是单元化架构的基础,一个单元被称为一个 Zone。实际部署的时候,每个单元需要遵从常用的部署方案。

所谓单元化,就是将业务划分为一个个小的业务单元。

单元化架构,就是将单元作为部署的基本单位,在全站所有机房中部署多个单元,每个机房内单元数目不固定,任一单元均部署系统所需的全部应用,数据则是全量数据按照某种维度划分后的一部分

2.什么是高可用?

即在分布式系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。 

想要实现高可用就要避免使用单点,需要多台机器也就是需要集群,方法论中叫冗余。如果有冗余备份,宕机了还有其他backup能够顶上,才可能实现高可用。

3.什么是正向代理和反向代理?

系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部看起来就像是代理服务器发起的访问,此时代理服务器实现的是正向代理;

当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对于外部请求来说,与之交互的只有代理服务器,此时认为是反向代理。

简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程。

二、架构的演进过程

下面介绍主要的四种软件架构。

1.单体架构

单体架构比较初级,典型的三级架构,前端+中间业务逻辑层+数据库层。这是一种典型的Java Spring mvc或者Python Django框架的应用。其架构图如下所示:

img

单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加, 越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性、灵活性逐渐降低,维护成本越来越高。

2.分布式应用

这种架构提供了负载均衡的能力,大大提高了系统负载能力,解决了网站高并发的需求

中间层分布式+数据库分布式,是单体架构的并发扩展,将一个大的系统划分为多个业务模块,业务模块分别部署在不同的服务器上,各个业务模块之间通过接口进行数据交互。数据库也大量采用分布式数据库,如redis、ES、solor等。通过LVS/Nginx代理应用,将用户请求均衡的负载到不同的服务器上。其架构图如下所示:

img

3.微服务架构

微服务架构,主要是中间层分解,将系统拆分成很多小应用(微服务),微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容器上。当应用的故障不会影响到其他应用,单应用的负载也不会影响到其他应用,其代表框架有Spring cloud、Dubbo等。其架构图如下所示:

img

4.云原生架构

最大的特点是在云环境下运行,也算是微服务的一种延伸。

Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器

img

总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值