vlambda博客
学习文章列表

干货|关于Java架构中分布式系统的负载均衡


干货|关于Java架构中分布式系统的负载均衡

说到Java开发,就永远都绕不过的必学知识点: 架构!

架构掌握得好了,Java技术又过硬,还有丰富的项目经验,那么薪资翻一番,甚至往架构师岗位走也是不无可能的!

当然,架构的知识点也不少,今天咱们就着重讲讲: 关于分布式系统的负载均衡!

干货|关于Java架构中分布式系统的负载均衡


干货|关于Java架构中分布式系统的负载均衡


干货|关于Java架构中分布式系统的负载均衡
一、 什么是负载均衡?



负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

 

资源,相当于每个服务实例的执行操作单元,负载均衡就是将大量的数据处理操作分摊到多个操作单元进行执行,用来解决互联网分布式系统的大流量、高并发和高可用的问题。


干货|关于Java架构中分布式系统的负载均衡


干货|关于Java架构中分布式系统的负载均衡
二、什么是高可用?



这是 CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:


Consistency(一致性)

Availability(可用性)

Partition tolerance(分区容错性)


那高可用(High Availability)是什么?


高可用,简称 HA,是系统一种特征或者指标,通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。


衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。


举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如电商网站有赞,服务不可用会造成商家损失金钱和用户。那么在提高可用性基础上同时,对系统宕机和服务不可用会有补偿。


干货|关于Java架构中分布式系统的负载均衡

总而言之,负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。一般通过负载均衡,冗余同一个服务实例的方式,解决分布式系统的大流量、高并发和高可用的问题。


负载均衡核心关键:在于是否分配均匀。


负载均衡的作用(解决的问题):

1.解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);

2.提供故障转移,实现高可用;

3.通过添加或减少服务器数量,提供网站伸缩性(扩展性);

4.安全防护。


干货|关于Java架构中分布式系统的负载均衡


干货|关于Java架构中分布式系统的负载均衡
三、常见的负载均衡案例



场景


微服务架构中,网关路由到具体的服务实例 hello:


两个相同的服务实例 hello service ,一个端口 8000 ,另一个端口 8082

通过 Kong 的负载均衡 LB 功能,让请求均匀的分发到两个 hello 服务实例

Kong 的负载均衡策略算法很多:默认 weighted-round-robin 算法,还有 consumer: consumer id 作为 hash 算法输入值等。


干货|关于Java架构中分布式系统的负载均衡



干货|关于Java架构中分布式系统的负载均衡
四、常见的互联网分布式系统架构



常见的互联网分布式系统架构分为几层,一般如下:


客户端层:比如用户浏览器、APP 端


反向代理层:技术选型 Nignx 或者 F5 等


Web 层:前后端分离场景下, Web 端可以用 NodeJS 、 RN 、Vue


业务服务层:用 Java 、Go,一般互联网公司,技术方案选型就是 SC 或者 Spring Boot + Dubbo 服务化


数据存储层:DB 选型 MySQL ,Cache 选型 Redis ,搜索选型 ES 等


一个请求从第 1 层到第 4 层,层层访问都需要负载均衡。即每个上游调用下游多个业务方的时候,需要均匀调用。

干货|关于Java架构中分布式系统的负载均衡



干货|关于Java架构中分布式系统的负载均衡
五、小结



对外看来,负载均衡是一个系统或软件的整体。


对内看来,层层上下游调用。只要存在调用,就需要考虑负载均衡这个因素。所以负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。考虑主要是如何让下游接收到的请求是均匀分布的:


干货|关于Java架构中分布式系统的负载均衡


第 1 层:客户端层 -> 反向代理层 的负载均衡。通过 DNS 轮询

第 2 层:反向代理层 -> Web 层 的负载均衡。通过 Nginx 的负载均衡模块

第 3 层:Web 层 -> 业务服务层 的负载均衡。通过服务治理框架的负载均衡模块

第 4 层:业务服务层 -> 数据存储层 的负载均衡。通过数据的水平分布,数据均匀了,理论上请求也会均匀。


目前,就深圳来说,Java岗位人才还是及其空缺,而需求量又大,正是这种人才供不应求的现状,也导致了Java工程师的薪资待遇相对优厚。


但是学习开发的这条道路也不是一帆风顺的,特别是在做一些实战的时候,很容易碰壁。如果条件允许的话,建议最好是找个靠谱的Java培训班,系统性的去掌握知识点!

干货|关于Java架构中分布式系统的负载均衡


千锋深圳Java培训还会优选就业机会多的互联网行业进行项目实训,并结合当下吸金的互联网金融项目,定期优化课程。

Java技术点覆盖广泛,除基础知识点外,还包括更深层次的技术点,以JavaEE的深度为主,横向及纵向延伸学员的专业技能。

干货|关于Java架构中分布式系统的负载均衡
干货|关于Java架构中分布式系统的负载均衡
干货|关于Java架构中分布式系统的负载均衡
干货|关于Java架构中分布式系统的负载均衡

干货|关于Java架构中分布式系统的负载均衡


充实自己,就现在

来千锋

学新技术、拿行业高薪


点击下方“阅读全文”

先预约14天免费试听课


即学即用,高薪就业不难



扫码客服小姐姐,获取免费学习资料


▼▼▼

干货|关于Java架构中分布式系统的负载均衡


-参考资料-
知乎等。