15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 大型分布式网站设计与实践

大型分布式网站设计与实践

时间:2023-09-08 16:54:02 | 来源:网站运营

时间:2023-09-08 16:54:02 来源:网站运营

大型分布式网站设计与实践:分布式应用架构就是解决系统之间的通信,存储,安全,性能监控,还有数据分析等问题。


通信:

按照功能和业务分拆为多个子系统之后,首要问题就是各个子系统之间的通信,也叫作远程调用(RPC)。

基于http协议的RPC,具有灵活便捷,平台无关性等优点,因此得到广泛的使用。

基于tcp协议的RPC,通信效率高,但是实现起来更加复杂,各个企业之间的协议和标准不同,难以实现跨平台和企业间通信。

同时基于网络环境的复杂性,同时还要考虑多线程并发,锁,io等底层细节的实现,任意小的错误都会被无限放大。因此选择http协议更符合主流 很多成熟的web容器已经处理好这些事情 开放人员可以将更多的精力集中在业务的实现上,而非处理底层细节。


同时通过代码优化和使用gizp数据压缩 能够缩小与tcp通信效率的差距。




通信载体,JSON是以字符串形式,通过人眼可阅读,

Protocol buffer虽然性能要更好,但是代码入侵性大

XML结构过于冗余


当系统的集群规模很大时,通过人工去管理负载均衡,去配置维护服务和配置信息越来越困难。负载均衡服务器一旦宕机,其他依赖它的服务就会失效。

此时,需要一个能够动态注册和获取服务信息的地方,统一管理服务的名称和其对应的服务器列表信息,称为服务配置中心。

能够感知服务的存活状态,注册新的可用服务。

zookeeper是针对大型分布式系统的可靠的协调系统,提供的功能包括配置维护,名字服务,分布式同步等。




存储:

通过NoSQL实现热点数据缓存。

使用NoSQL实现分布式session。

MySQL读写分离,分库分表。

消息系统,消息作为应用间通信的一种方式,保存在队列中,实现系统的异步,降低系统耦合度,提升响应速度。

ActiveMQ,rabbitMQ等,常用的是发布订阅模式。

垂直化的搜索引擎在分布式系统中是一个非常重要的角色,既能满足用户对于全文检索,模糊查询的需求,解决like查询效率低的问题,同时解决由于分库分表,或者使用NoSQL导致无法进行多表关联查询的问题,开源的搜索引擎框架Lucene和solr的组合。




安全:

对于常规的web攻击手段,如xss,CRSF,SQL注入等,通常解决容易,如xss的防范通过转义输入的尖括号,

防范CRSF需要将cookie设置httponly 以及增加session的hash token,

防范SQL注入需要将分号等符号转义

图片上传漏洞,通过压缩图片来处理。




数字摘要算法有md5,sha,base64,

就是一个值通过某个函数的处理得出另外一个对应的值,当有些摘要算法不可逆向,并且暴力破解难度大的时候就可以直接作为加密算法使用,base64可逆向,所以它不作为加密算法。




加密算法,

对称加密算法,DES,AES

非对称加密,RSA

签名认证是非对称加密技术与数字摘要技术的综合运用。

HTTPS就是签名证书的一种运用。

OAuth协议是授权第三方应用访问开放平台的技术。


性能监控:

由于线上系统不能够debug解决问题,所以通常是通过分析日志查找问题。分析日志过程中,经常需要使用一些shell命令,或者写一些脚本加快分析的速度,更快的从日志中筛选有价值的内容。

如grep,awk等命令

性能测试工具,ab,jmeter




数据分析:

对于写入的日志可以采用轮循的方式读日志文件,但是对于不频繁写入的日志这样做效率太低了,可以通过Linux系统提供的inotify机制,检测文件被写入了通知应用程序来收集日志,

读取到日志内容不是简单的输出打印,而是通过activemq等消息中间件发送给那些日志订阅方,然后进行相应的数据分析。

inotify解决日志收集效率问题,ActiveMQ解决日志数据分发问题,接下来就是解决日志分析和存储问题。

数据经过inotify的收集,activeMQ数据转发,经过storm进行实时处理,在存储到MySQL,HDFS,hbase等存储系统,最后再进行深度分析和实时的展现。




对于不需要实时分析的数据,可以保存到HDFS上,然后通过mapreduce或者hiveSQL进行数据分析和挖掘。

对于需要实时展现的内容,则可以保存到hbase上,hbase是高性能可伸缩的列表系统。

Hadoop的两个核心,HDFS和mapreduce。

HDFS分布式文件系统并非传统意义上的文件系统,它工作在操作系统的用户空间,由应用程序来实现,并不依赖底层文件系统的具体实现。


hive是基于Hadoop的一个数据仓库工具,可以将HDFS存储的结构化的数据文件映射为一张数据库表,并提供SQL查询功能。


根据数据类型的不同,数据分析分两种:

批量数据分析,适合做有限的数据的分析挖掘,离线数据分析大部分采用这种方式。如hive




流式数据分析,永远不会终结的流,源源不断的从应用服务器流向日志分析服务 ,这种适合实时在线分析。如 storm




数据同步,

离线数据同步用sqoop,能够将MySQL和HDFS或者hive进行双向的转换。

实时数据同步用activeMQ,实现增量数据同步。

数据报表工具,highcharts

关键词:设计,实践,分布,大型

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭