首页 > 网站建设 >

大型电商平台建设如何使用集群服务器模式?

发布时间:2018-10-26 作者:深圳网站建设

大型电商平台建设如何使用集群服务器模式?
  使用集群模式,在网站高并发访问的场景下,使用负载均衡技术为个应用构建个由多台服务器组成的服务器集群,将并发访问请求分发到多台服务器上处理,避免单服务器因负载压力过大而响应缓慢,使用户请求具有更好的响应延迟特性,就这个现象,深圳网站建设公司制作如下图4-15所示。
    大型商城网站建设集群服务模式示意图4-15利用负载均衡技术改善性能
 三台Web服务器共同处理来自用户浏览器的访问请求,这样每台Web服务器需要处理的http请求只有总并发请求数的三分之,根据性能测试曲线,使服务器的并发请求数目控制在最佳运行区间,获得最佳的访问请求延迟。
大型商城网站建设之代码优化
  网站的业务逻辑实现代码主要部署在应用服务器上.需要处理复杂的并发事务。合理优化业务代码,可以很好地改善网站眭能。不同编程语言的代码优化手段有很多,这里我们概要地关注比较重要的几个方面。
1.多线程
  多用户并发访问是网站的基本需求,大型网站的并发用户数会达到数万,单台服务器的并发用户也会达到数百。CGI编程时代,每个用户请求都会创建个独立的系统进程去处理。由于线程比进程更轻量,更少占有系统资源,切换代价更小,所以目前主要的Web应用服务器都采用多线程的方式响应并发用户请求,因此网站开发天然就是多线程编程。从资源利用的角度看,使用多线程的原因主要有两个:IO阻塞与多CPU。当前线程进行10处理的时候,会被阻塞释放CPU以等待10操作完成由于I0操作(不管是磁盘10还是网络IO)通常都需要较长的时间,这时CPU可以调度其他的线程进行处理。前面我们提到,理想的系统Load是既没有进程(线程)等待也没有CPU空闲,利用多线程10阻塞与执行交营进行,可最大限度地利用CPU资源。使用多线程的另个原因是服务器有多个CPU,在这个连手机都有四核CPU的时代,除了最低配置的虚拟机,般数据中心的服务器至少16f~CPU,要想最大限度地使用这些CPU.必须启动多线程。
  网站的应用程序一般都被Web服务器容器管理,用户请求的多线程也通常被Web服务器容器管理,但不管是Web容器管理的线程,还是应用程序自己创建的线程,台服务器上启动多少线程合适呢?假设服务器上执行的都是相同类型任务,针对该类任务启动的线程数有个简化的计算公式可供参考:
  启动线程数=[任务执行时间/(任务执行时间(10等待时间)]]CPU内核数
最佳启动线程数和CPU内核数量成正比,和10阻塞时间成反比。如果任务都是CPU计算型任务,那么线程数最多不超过CPU内核数,因为启动再多线程,CPU也来不及调度;相反如果是任务需要等待磁盘操作,网络响应,那么多启动线程有肋于提高任务并发度,提高系统吞吐能力。
2.改善系统性能。
  多线程编程个需要注意的问题是线程安全问题.即多线程并发对某一个资源进行修改,导致数据混乱。这也是缺乏经验的网站开发工程师最容易犯错的地方.而线程安全Bug又难以测试和重现,网站故障中,许多所谓偶然发生的“灵异事件”部和多线程并发问题有关。对网站而言,不管有没有进行多线程编程,工程师写的每行代码都会被多线程执行,因为用户请求是并发提交的,也就是说.所有的资源对象、内存文件、数据库,乃至另个线程都可能被多线程并发访问。
大型商城网站建设在编程上,解决线程置全的主要手段有如下几点:
  将对象设计为无状态对象:所谓无状态对象是指对象本身不存储状态信息(对象无成员变量,或者成员变量也是无状态对象),这样多线程并发访问的时候就不会出现状态不致,JavaWeb开发中常用的Servlet对象就设计为无状态对象,可以被应用服务器多线程并发调用处理用户请求。而Web开发中常用的贫血模型对象都是些无状态对象。不过从面向对象没计的角度看,无状态对象是一种不良设计。
  使用局部对象:即在方法内部创建对象,这些对象会被每个进入该方法的线程刨建除非程序有意识地将这些对象传递给其他线程,否则不会出现对象被多线程并发访问的情形。
并发访问资源时使用锁:即多线程访问资源的时候,通过锁的方式使多线程并发操作转化为顺序操作,从而避免资源被并发修改。随着操作系统和编程语言的进步,出现备种轻量级锁,使得运行期线程获取锁和释放锁的代价都变得更小,但是锁导致线程同步顺序执行,可能会对系统性能产生严重影响。
3.资源复用
  系统运行时,要尽量减少那些开销很大的系统资源的创建和销毁,比如数据库连接、网络通信连接、线程、复杂对象等。从编程角度,资源复用主要有两种模式:单例(Singleton)和对象池(ObjectPool)。单例虽然是GoF经典设计模式中较多被诟病的个模式,但由于目前Web开发中主要使用贫血模式,从Service到Dao都是些无状态对象,无需重复创建,使用单例模式也就自然而然了。事实上.Java开发常用的对象容器Spring默认构造的对象都是单例(需要注意的是Spring的单例是Spring容器管理的单例,而不是用单例模式构造的单例)。
  对象池模式通过复用对象实例,减少对象创建和资源消耗。对于数据库连接对象,每次创建连接,数据库服务端都需要创建专门的资源以应对,因此频繁创建关闭数据库连接,对数据库服务器而言是灾难性的,同时频繁创建关闭连接也需要花费较长的时间。因此在实践中,应用程序的数据库连接基本都使用连接池(ConnectionPool)的方式。数据库连接对象创建好以后,将连接对象放入对象池容器中,应用程序要连接的时候,就从对象池中获取个空闲的连接使用,使用完毕再将该对象归还到对象池中即可,不需要创建新的连接。
  前面说过,对于每个Web请求(HTTPRequest),Web应用服务器部需要创建个独立的线程去处理,这方面,应用服务器也采用线程池(ThreadPool)的方式。这些所谓的连接池,线程池,本质上都是对象池,即连接、线程都是对象,池管理方式也基本相同。网站建设公司-博纳网络关于大型商城网站建设使用服务器集群模式的好处以及需要注意的问题本文就介绍到这里。喜欢本站的朋友敬请持续关注本站。我们会在下期的文章中就大型电商平台建设如何优化数据库进行禁言分享。
文章标题:大型电商平台建设如何使用集群服务器模式?
本文地址:https://www.198bona.com/news/1578.html
如果您觉得案例还不错请帮忙分享:

网站建设

网络推广

解决方案

域名主机

建站行业资讯