打开APP
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
干货:厉害的来了!大牛程序员告诉你互联网架构如何演进

互联网的普及促进了各种创新应用的涌现,不过,由于是创新的应用,在搭建这些应用时也出现了各种各样的误区,比如:

想要搭建一个电子商务的应用,首先想到的是套用阿里的方案,其实由于公司业务方向不同,很难直接套用别人的方案,更合适的做法是让互联网的技术架构随着业务的发展而不断拓展,这样既节省成本又提升效率;

还有一个明显的误区是,为了追求技术而技术,很多架构师为了尝鲜,喜欢采用最新的技术,而采用新技术一般需要付出更高的成本,更重要的是,新技术能否支撑业务也是一个未知数,因为互联网的架构和传统软件有较大区别,传统的应用软件在开始建设时就知道要实现的功能,但互联网应用都是创新的应用,刚开始时大家并不完全确定业务方向和具体功能,需要根据具体的业务摸索着前进,新技术能否随着业务的演进而演进也是要充分考虑的。

那到底互联网应用的技术架构该如何演进呢?用友能源研发中心副总经理闫建伟在用友能源技术交流会上做了《互联网架构演化》的主题分享与沟通,对这一问题进行了详细的解读和分析,据他介绍,互联网创新应用技术架构的演进可以通过以下十步逐级实现:

一、采用简单的LAMP架构

要做一个互联网应用,我们首先想到的应该是快速地开发出这个应用,推向市场,让市场去对其进行验证。在这个阶段一般是采用简单的技术,简单的设备,通常的技术架构是采用LAMP架构,L是Linix 、A 是Apache、M是 Mysql、P是 PHP,可以看出整个技术架构比较简单,但可以快速上线。

LAMP架构

二、应用服务与数据服务分离

随着业务增加和用户访问量的增加,一台应用服务器已经无法满足网站的正常运行时,怎么办呢?在技术上,通常的做法是把应用和数据分开进行独立部署,根据业务发展情况,可以将1台服务器分成3台服务器,分别运行应用程序、数据库和文件系统,这3台服务器部署不同,对性能要求也不同,比如应用服务器通常需要处理大量的应用逻辑,那就需要更强、更快的CPU;数据库服务器通常要做大量的检索,因而需要更大的内存和更快的硬盘响应速度;文件服务器通常需要存储大量的文件,所以需要很大的存储硬盘。

服务器分离结构

三、使用缓存改善网站性能

上面讲到了对服务器的要求,而随着服务的增加,数据会变多,这会造成数据服务器压力过大,整个网站的应用性能下降。我们知道,客户访问一般也存在二八原则,大量的访问会集中到少量的数据上,比如我们通常会点击那些评价好、信用好的商家的货物,这样就会造成某几个商品的点击率特别高,我们的技术对策是把经常访问的数据放到缓存里,不让他访问数据库,这样可以加快数据的访问速度,同时减少数据库的压力。

缓存主要分为:第一、应用服务器本地缓存,应用服务器的本地缓存是访问速度最快的一种方式,缺点是应用服务器的缓存不可能无限扩容;第二,远程分布式缓存,远程分布式缓存可以使用集群方式,这样大量的服务器可以作为缓存服务器,通过这种方式,在理论上,可以实现缓存的无限扩容,当然,具体情况需要具体分析。使用缓存后,数据库压力得到缓解,网站的性能得到整体提升。

本地缓存与远程分布式缓存

四、使用应用服务器集群改善并发能力

而随着业务的发展,业务服务器随时面临高并发的问题,单一的应用服务器不再能支持业务的发展。此时,通常的做法是通过应用服务器集群来解决高并发的问题,而不是更换服务器,不管多强大的服务器都无法满足网站持续发展的业务需求,因此通过集群的方式来分担应用服务器的压力是最优的选择方案。通过负载均衡调度服务器,可以将用户的请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加上更多的应用服务器,从而解决高并发的问题。

服务器集群方式

五、数据库读写分离

上面提到通过缓存、集群可以解决性能和高并发的问题,那如果出现缓存失效和缓存穿透,或有些必须访问服务器的服务,如何解决性能问题呢?一般情况下,我们的服务器都有主从热备的功能,相当于我们设置了服务器的主从关系,通过这个功能让数据从主服务器复制到从服务器,由此可以实现数据库读写分离,就是写数据的时候只写到主数据服务器,然后通过主从复制的功能,把数据从主服务器复制到从服务器,读的时候只读从服务器,这样每个服务器承载的压力下降,并发变小,通常会设置一个服务器的访问模块,这样可降低网站的耦合性。

数据库读写分离

六、使用反向代理和CDN加速网站响应

我们知道,CDN和反向代理都是缓存,只不过CDN是部署在网络运营商的机房,反向代理是部署在我们服务器的中心机房,他的目的是把一些静态资源,比如图片放到缓存里,这样用户访问的时候是先访问CDN服务器,也就是用户是从离他最近的网络运营商的机房访问用户希望访问的数据,这样可以提高用户的体验。如果穿透了CDN,这时来到反向代理服务器,从方向代理来访问资源,也不会影响用户的体验。

使用CDN和反向代理

七、分布式文件系统和分布式数据库系统

任何的单一的数据服务器都满足不了网站业务持续增长的需求,数据库经过读写分离后,从一台拆分成两台服务器,但随着网站的发展依然无法满足性能的要求,这时需要使用分布式数据库和分布式文件系统。常用的方法是按表拆分和按业务拆分,最常用的是按业务拆分,将不同业务的数据部署在不同的数据库服务器上。按表拆分是数据库拆分的最后手段,只有在单表规模非常大的时候才使用这种方法。

分布式文件系统和分布式数据库

八、使用NOSQL和搜索引擎

随着网站业务越来越复杂,对数据库存储和检索的需求也越来越复杂,网站需要采用非关系型数据库如NOSQL和非数据库查询技术如搜索引擎来提升网站性能。NOSQL和搜索引擎是互联网广泛应用的技术手段,他们对可伸缩的分布式特性可以很好的支持,通过统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。

NOSQL和搜索引擎的部署

九、对系统进行业务拆分、独立部署

大型网站为了应付日益复杂的业务场景,通常会将系统拆分成多个子系统进行独立部署。比如滴滴打车,他就分为乘客端、司机端、支付端、分析系统,通常是按业务系统来拆分,然后每个业务系统又独立部署,这样有利于系统维护,同时减少服务器并发,有利于应用架构的承载,各个系统通过超链接的方式进行界面的联通,数据层通常是采用消息队列来实现数据分发。

对业务进行拆分和独立部署

十、分布式服务

随着业务拆分越来越小,整个系统越来越庞大,应用系统的整体复杂度增加,维护起来就越困难。通常每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供公用服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体操作。

分布式部署

到这一步,一个创新的互联网应用的业务基本都可以支撑了。

怎么样,学会了吗?做个行动派吧!

关于用友能源

用友能源是聚焦能源行业的专业化公司,为能源行业用户提供信息化服务及企业互联网服务。信息化服务包括面向能源行业客户提供企业经营管理(财务、供应链、人力资源、合同管理、审计管理等)、工程项目管理(包括核电工程项目管理、输变电工程项目管理、电厂基建项目管理等)、生产管理(包括资产管理、燃料管理、安健环HSE、制造执行系统MES等)、以及营销侧、售电侧信息化解决方案等一体化的行业解决方案。企业互联网服务包括数字营销、共享服务、社交协同、智慧能源等。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
大型网站架构技术一览(系统性能、可用性、伸缩性、扩展性、安全性)
解读大型网站系统架构的演化
《大型网站技术架构》读书笔记三:大型网站核心架构要素
大型网站架构演化一些关键点
以淘宝网为例,解析大型Java项目架构演进
大型网站架构的演化
更多类似文章 >>
生活服务
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服