大型分布式网站架构体系化分析

昨天书城看到一本由陈康贤著的《大型分布式网站架构设计与实践》,随手翻了翻。

这本书从架构、基础建设、安全性、稳定性和数据源对分布式架构做了分析,体系化思路和我的想法大体吻合。我这里也按照书本结构,谈谈从本书get到的点。

架构

大型分布式架构是面向服务的体系架构SOA

既然是分布式,那必然要考虑集群主机的服务交互问题,也就是远端服务调用手段RPC(Remote Procedure Call)。

从OSI模型角度将,RPC有两种协议交互协议:

基于传输层的TCP协议

TCP协议,也就是Socket通信的TCP流模式,在各主流开发语言中,基本都会涉及。如C/C++开发在Unix/Linux环境下会使用bind、accept、listen等,其他Java、Python等流程上也大体差不多。

基于应用层的HTTP协议

相比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

以及用于日志收集、数据同步、数据报表等场景的一系列分析方式。

总结

大型分布式网站架构相对传统开发模式,架构比较复杂。

大概翻翻这本书,可以对架构的全貌有一个大概的认识。不错。

版权声明

弈心博客


本文首发弈心博客,转载请附上博文链接!