现在的位置: 首页 > 综合 > 正文

推荐书籍<大型网站技术架构-核心原理与案例分析>–结合内容思考产品架构

2018年05月13日 ⁄ 综合 ⁄ 共 1253字 ⁄ 字号 评论关闭

经过3年的后台开发,一直纠结于c++和GoF,碰到过一些问题也解决过一些问题,但后来发现局部修改解决不了问题的时候,麻烦来了。c++在我手里实在是暴殄天物,重业务而轻架构,实在发挥不出c++的威力来,反而一些成熟的解决方案让开发更简单快捷,比如java、python。一把利器在手如何发挥威力,关键在于使用者。

平时关注一些流行的技术,浅尝辄止,不知道怎么串联起来,读完本书才豁然开朗。这些流行的开源技术在一些比较成熟的大型系统中应用,帮助产品解决很多问题,相辅相成、相得益彰、相互促进,这些践行者基本上让解决方案有了成熟的架构。

以前做产品很少去思考一个成熟的产品应该具备什么,本书就围绕着性能、可用性、伸缩性、扩展性、安全性来阐述一个大型网站架构应该有的要素,不过也都是浅尝辄止,意犹未尽。虽然只言片语,但是每个细则要去深究都够写一本厚厚的书。马上要做云产品了,我觉得运维才是重中之重。如果要排序的话我认为可用性、安全性>性能、伸缩性、扩展性。

一、大型网站的架构模式

1.分层,分层的目的在于规划清晰的逻辑便于开发维护,但在大型网站中需要通过分层来支持分布式扩展。

2.分割,打造高内聚松耦合的产品,便于业务的快速开展

3.分布式,分布式是个好东西,但是也要根据业务场景来,网络、数据一致性等是其瓶颈,目前主要应用有分布式应用、服务、静态资源、存储、计算、锁、文件系统等

4.集群,通过负载均衡来缓解服务器压力

5.缓存,在响应一些常用资源的时候,我们应该首先考虑缓存,笔者曾经就因为一个配置开关未放入缓存而造成mysql数据库频繁读写性能下降而被鄙视。

6.异步,笔者在这块吃过大亏,由于考虑客户端调用接口的方便问题而采用了同步模式,虽然未对业务流程造成影响,但当服务器重启后大量客户端同步请求后台服务数据,后台消息处理又是有序队列,结果网速差一点的用户足以卡住系统,使其他用户无法使用客户端。所以架构师在确定模型的时候务必慎重。

7.冗余,确保数据不丢失

8.自动化,发布过程自动化、代码管理自动化、自动化测试、自动化安全检测、自动化部署,自动化监控、报警、失效转移、失效恢复、服务降级、分配资源

9.安全,当心别变成黑客的比特币挖矿机

二、大型网站的核心架构要素

1.性能,大多数初级程序员首先考虑的是怎么样去优化代码,但是其实还可以通过其他方式来提高性能的,比如CDN、本地缓存、分布式缓存(memcached)、异步业务设计等。衡量一个系统的性能,需要考虑高并发的情况。

2.可用性,一个系统如何做到4个9以上的可用性是考验架构师们,假设系统中任何一台或多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用

3.伸缩性,一个系统如何通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求

4.扩展性,网站的伸缩架构的主要手段是事件驱动架构和和分布式服务。生产消费者来处理消息队列;业务和可服用的服务分离,通过分布式服务框架调用

5.安全性,互联网是开放的,你做好防狼手段了吗?

抱歉!评论已关闭.