昨天书城看到一本由陈康贤著的《大型分布式网站架构设计与实践》,随手翻了翻。
这本书从架构、基础建设、安全性、稳定性和数据源对分布式架构做了分析,体系化思路和我的想法大体吻合。我这里也按照书本结构,谈谈从本书get到的点。
大型分布式架构是面向服务的体系架构SOA
既然是分布式,那必然要考虑集群主机的服务交互问题,也就是远端服务调用手段RPC(Remote Procedure Call)。
从OSI模型角度将,RPC有两种协议交互协议:
TCP协议,也就是Socket通信的TCP流模式,在各主流开发语言中,基本都会涉及。如C/C++开发在Unix/Linux环境下会使用bind、accept、listen等,其他Java、Python等流程上也大体差不多。
相比TCP协议的流模式,HTTP模式从应用的角度讲方便太多。在覆盖实际业务的开发中,其强大的会话和数据表示能力极大的提升开发速度,不需要去耗费精力开发基础协议。
GET和POST两种主流的请求方式,可以解决绝大多数业务的交互需求。
JSON和XML两种数据定义格式,各有特点,足以清晰的描述各基于HTTP协议的接口。
RESTful架构使用以GET/POST等请求和JSON/XML等数据格式,实现的前后端服务多对多以应用接口方式交互的架构。
分布式的需求来源于高并发。在并发场景,为保证稳定的服务,需要让各服务的负载能力达到相对均衡的状态。
处理策略有基于一致性哈希、Master/Slave的方式,现在业内使用ZooKeeper是一种高效、可靠的分布式协调服务来处理负载均衡问题。
HTTP服务网关也是一种处理负载均衡的方式,各设备之间心跳检测,如有宕机则让其他正常服务接管业务。
实现架构需要分布式缓存、持久化存储、消息系统和垂直化搜索引擎等基础设施的支撑。
如使用memcache分布式缓存,使用Mysql、HBase、Redis等持久化存储,使用ActiveMQ&JMS实现消息系统,使用Lucene、Solr等实现垂直化搜索。
分布式网站的安全问题,即互联网安全。关注点:
(1)服务端需防范常见Web攻击,如XSS、SQL注入、文件上传、DDos等;
(2)服务端与客户端间交互时的认证,如签名认证、摘要认证等;
(3)传输通道加密,如HTTPS通道加密
在安全体系中,有一系列的算法应用,如数字摘要、对称和非对称加密、签名、证书等。
提供服务的可靠性需要一系列手段保证。如在线日志分析、集群监控、流量控制和性能优化等。
互联网服务的根基是数据,两位马爸爸为首的一众互联网服务这么贴心,和他们掌握的海量数据有很大关系。
数据分析是目前很热的大数据、AI,海量数据智能分析。
具有代表性的:
离线数据分析 Hadoop
流式数据分析 Storm
以及用于日志收集、数据同步、数据报表等场景的一系列分析方式。
大型分布式网站架构相对传统开发模式,架构比较复杂。
大概翻翻这本书,可以对架构的全貌有一个大概的认识。不错。