大型分布式系统组成元素
#1,分布式跟踪系统 监控平台,如淘宝的鹰眼。用于跟踪请求处理调用链关系,并将各环节请求处理时间,处理结果等信息通过日志系统存入数据库。便于排查错误和分析性能瓶颈等作用。分布式跟踪系统要做到低损耗,低侵入性(最好能做到对应用层代码透明)等特性。 #2,消息中间件 作用:异步,解耦,并行,流量削峰(activeMq,rabbiteMq,kafka,zeroMq等),对于秒杀类场景,可以使用mq进行流量削峰,将客户端抢购请求封装成消息,投入mq。由后台系统异步去处理抢购请求,从而可以避免大量请求直接打到应用服务器,数据库服务器,造成系统瘫痪。后台处理系统可以采用按批次处理抢购请求,比如1次处理100个请求。从而可以很好的控制对数据库系统造成的压力。 #3,分布式缓存系统 作用:缓存热点数据,减轻数据库系统压力,提升服务响应性能(redis,memcached等),要做到缓存系统的高可用,一般采用主从模式,redis自带数据复制功能,但memcached不支持数据复制,必须采用第三方插件repcached,完成主从之间的复制,memcached sdk支持failuremode,当主库宕机后,能够自动将请求转到从库。或者使用keepalived插件实现双机浮动的高可用方案。 #4,分布式文件系统(fastDFS) #5,分布式日志收集系统 作用:收集应用系统日志,用于系统分析 flume(日志采集器) -> kafka(日志缓冲队列) -> storm(实时分析框架) -> mongodb或hdfs或关系型数据库(分析结果入库) #6,分布式数据库集群 mysql数据库,当单表数据量达到千万级别时,就要考虑数据的水平切分了,mysql单表数据量一亿时,select count(1) from t_table_a,耗时24秒左右,性能慢的是让人难以忍受的。所以对于数据按时间,Id,hash等规则水平切分到不同分库里(mycat中间件代理),按业务进行垂直拆分,将不同业务表,分到不同的业务库里。以此提升数据库服务器响应性能。 #7,集群配置管理系统 作用:管理应用系统配置及服务降级开关等配置,可以采用netty自己实现配置变更推送功能。 #8,SOA服务化治理 作用:服务动态发现,服务治理,服务监控等功能。例如:阿里的dubbo , 当当网的dubbox。 #9,负载均衡,反向代理 作用:流量分发,失效转发 failover,反向代理等功能。例如:nginx , haproxy , lvs。
相关推荐
CoderToy 2020-11-16
技术之博大精深 2020-10-16
emmm00 2020-11-17
bianruifeng 2020-11-16
云中舞步 2020-11-12
世樹 2020-11-11
暗夜之城 2020-11-11
张荣珍 2020-11-12
amienshxq 2020-11-14
ASoc 2020-11-14
yungpheng 2020-10-19
loveyouluobin 2020-09-29
尘封飞扬 2020-09-29
Coder技术文摘 2020-09-29
lbyd0 2020-11-17
BigYellow 2020-11-16
sushuanglei 2020-11-12
我心似明月 2020-11-09