大型网站技术架构演化 (2)

大型网站技术架构演化

2.应用服务和数据库分离:网站使用三台服务器:应用服务器、文件服务器、数据库服务器

大型网站技术架构演化

一般情况下有这么几种形式?

(1)nginx+tomcat+ftp+mysql/oracle;

(2)nginx+tomcat+vsftp+mysql/oracle;

(3)apache+tomcat+ftp+mysql/oracle;

(4)nginx+tomcat;

(5)docker容器实践思路(又称容器化);

当然了,上述列出的仅仅是冰山一角,有部分公司拥有自己研发的DB或者应用服务器。

3.使用缓存改善网站性能:使用缓存后数据库访问压力得到有效缓解

大型网站技术架构演化

a.那么在什么样的情况应该使用缓存?

(1)经常变化的数据,但是不需要立刻进行持久化的;

(2)经常被大量读取,很少进行更新操作;

(3)大量的数据库IO操作;

(4)通用的页面,如JS、CSS、图片等;

(5) 统计和计算需要暂存的信息,需要加快计算的;

b.Java常用的缓存框架有哪些呢?

一般情况下,用Redis或者Memcache,当然了,有的时候也会用ehcache,关于Java常用的缓存框架代码示例和介绍可参考该篇文章:https://www.cnblogs.com/chinway/p/5534636.html

4.使用服务器集群改善网站的并发处理能力:通过负载均衡调度器将请求分配到集群中的服务器上

大型网站技术架构演化

这种方式又可以称作“中心化”,所有的请求全部经过Nginx,由Nginx分发请求到不同的应用服务器上面(根据权重进行分配)。

5.数据库读写分离:应用服务器在写数据的时候访问主数据库,主数据通过主从复制机制将数据更新同步到从数据库,这样当服务器读数据的时候就可以通过从数据库了

大型网站技术架构演化

6.使用反向代理和CDN加速网络响应

关于CDN可以参考我的这篇文章:谈谈CDN

不过觉得还是要贴一下图,这样会有一个感性的认识。

大型网站技术架构演化

什么是反向代理呢?

反向代理是指以代理服务器来接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

7.使用分布式文件系统和分布式数据库系统

大型网站技术架构演化

分布式文件系统有哪些?

主要有MFS、Ceph、GlusterFS、Lustre等

关于它们的区别可参考:

分布式文件系统MFS、Ceph、GlusterFS、Lustre的对比

8.使用NOSQL和搜索引擎

大型网站技术架构演化

应用比较多的NoSQL,比如Memcache、Redis、MongoDB等。

搜索引擎,以solr和elasticsearch比较多。

9.业务拆分

关于业务拆分可参考我的这篇博文业务拆分的思考

10.分布式服务

可以去看看分布式服务架构这本书或是去看看国外相关专业人士的论文或文章。

分布式服务架构:原理、设计与实战电子书下载地址为:https://pan.baidu.com/s/1hK3vlIHX0SgbD4NNKx_zTg

三、大型网站演化的价值观

(1)大型网站架构核心价值是随网站所需灵活应付;

(2)驱动网站技术发展的主要力量是网站发展业务;

大型网站的核心价值不是从无到有二搭建一个大型网站,而是能够伴随小型网站业务逐步发展,慢慢演化成一个大型网站,网站的架构选择尽量满足网站用户增加需求。

四、网站架构设计误区

误区如下所示:

(1)一昧追随大公司方案;

(2)为了技术而技术;

(3)企图用技术解决所有问题;

参考资料如下:

什么是高并发:https://blog.csdn.net/DreamWeaver_zhou/article/details/78587580

什么是高可用:

什么是海量数据?它具有哪些特征?:

在什么情况使用Java缓存:https://flychao88.iteye.com/blog/1532335

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzxgw.html