课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式架构开发是目前大多数软件开发程序员都会用到的一种软件架构模式之一,今天我们就通过案例分析来简单了解一下,零基础入门分布式架构需要掌握哪些知识点。
1、应用集群
反向代理服务器:把用户请求反向路由到应用服务器,常见的反向代理服务器是Nginx或HAProxy
应用服务器:集群化部署
数据库服务器:主从部署
架构优点:
可用性高:代理服务器、应用服务器、数据库服务器都是做了集群,当某台机器挂掉后,其他机器能够几乎无感的接替下任务
性能比单体架构高:用户的请求分发到多个应用服务器上,整体性能接近单体结构的三倍
安全性高:外网用户访问的是反向代理服务器,应用和数据库隔离在内网中
2、分布式缓存
缓存分为多级缓存,比如本地缓存(JVM中),分布式缓存服务器(Redis集群等)。本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务。常见缓存服务器包括Redis、Memcached等。使用缓存后,数据访问压力得到有效缓解。
3、业务拆分
业务进一步发展,用户越来越多,系统又出现了瓶颈,此时整个电商系统可以做系统拆分了,系统拆分分为水平拆分和垂直拆分。
水平拆分:
拆分成商品、订单、交易、用户、支付等多个系统,每个系统都都是多台服务器构成的集群。
垂直拆分:
将一些公共业务和服务,如用户中心拆分成注册登录中心和用户中心,短信、文件、消息等各种公共服务,从业务系统中拆分剥离出来。
这种架构的优势也比较明显,一方面,应用系统增加了,能够响应用户的请求也会变多,另一方面公共服务能够提供给所有的应用使用,达到服务复用的效果。但是大家需要注意的是数据库有可能只是一个,而单一数据库服务器的处理能力必然是有限的,随着用户并发量的持续增多,数据库将会是系统的瓶颈。
4、分库分表和读写分离
读写分离:
在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。目前大部分的主流数据库都提供主从热备功能,通过配置数据库的主从关系,可以将一台数据库服务器的数据更新同步到另外的数据库服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。
应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。
分库分表:
随着数据库中的数据量越来越大,相应的,查询所需要的时间也越来越多,这个时候,相当于数据的处理遇到了瓶颈,另一方面单库发生意外的时候,需要修复的是所有的数据,而多库中的一个库发生意外的时候,只需要修复一个库。基于此,分库分表就成了必然。分库分表的策略很多,如按照用户、订单、交易、商品等进行分库,不同的数据库中按照时间进行分表。
分库分表带来性能上的显著提升,但相应的管理和维护成本也比较高,比如数据库服务器的维护、分表策略的维护。为了便于应用程序访问分库分表、读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库的分库分表和读写分离对应用透明。
5、静态化和CDN
随着网站业务不断发展,用户规模越来越大,和中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。主要手段有使用页面的静态化和CDN。
操作方式上把一些页面,比如某些商品的详情信息,在发布商品时将页面静态化,静态化页面和静态资源可以放在CDN服务器,部署在网络服务提供商的机房,用户在访问静态资源时,可以很好的利用CDN的优点,从距离自己近的网络提供商机房获取数据。
6、异步解耦
应用之间的服务存在互相调用的情况,但有些场景下,并不需要同步调用,比如某个业务完成后,需要短信通知对方,而短信接收的时间晚几秒钟都是可以接受的,此时就不需要同步处理了,我们可以使用消息队列,把发送短信的内容扔到消息队列中,达到异步处理的效果,从而增强业务系统的性能,此时对于服务之间也达到了解耦的功能,服务之间的依赖减少了。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。