欢迎访问合肥市大数据资产运营有限公司网站!
0551-65909059   公司OA
联系电话:
当前位置:首页>>新闻中心>>行业动态 >>分布式网站架构和设计
今天是: 2024年05月17日   【农历:四月初十 】  星期五
分布式网站架构和设计

一、面向服务的架构(SOA service oriented architecture)

RPC的全称是Remote Process Call,远程过程调用。

微信图片_20191118145824.jpg

无论是何种类型的数据,都要转换成二进制在网络上进行传输。将对象转换成二进制称为对象的序列化,将二进制恢复为对象称为反序列化。

Hessian比java内置的序列化 效率高很多。

转换成json或者xml


通过HttpClient发送Http请求

两种主要的url链接风格,一种是RPC风格,一种是REST风格。

RPC的url直接在http请求的参数中标明需要远程调用的服务接口名称、服务需要的参数;

REST通过Http请求对应的POST、GET、PUT、DELETE来完成对应的crud操作。

POST 创建、GET获取信息、PUT更新、DELETE删除


分布式应用架构体系对于业务逻辑的复用需求很强烈,上层业务都想借用已有的底层服务,来快速搭建更多、更丰富的应用。公共的业务被拆分出来,形成可共用的服务,最大程度的 保障代码和逻辑的复用,避免重复创建,这种设计称为SOA。

微信图片_20191118145842.jpg

请求到来时,将请求均匀分配到后台服务器,负载均衡服务器从服务对应的地址列表中,通过相应的均衡算法和规则,选取一台服务器进行访问,这个过程称为服务的均衡负载。


常见的均衡负载算法包括轮询法、随机法、原地址哈希法、加权轮询法、加权随机法、最小连接法等。


轮询法(Round Robin):将请求按顺序轮流分配到后端服务器,均衡的对待服务器,不关心服务器的连接数和实际负载。(需要保存轮询的位置,需要加锁,影响系统吞吐量)

随机法(Random):根据后端服务器列表的大小值随机取一个,根据概率统计理论,随着数量的增多,越来越接近平均分配流量到后台服务器。

原地址哈希法(Hash):获取客户端访问的ip地址,通过哈希算法获得一个值,用该值对服务器列表长度进行取模运算,


加权轮询法(Weight Round Robin):给配置高、负载低的机器配置更高的权重,让其处理更多的请求,而低配置的机器则降低负载。

微信图片_20191118145903.jpg

微信图片_20191118145909.jpg

加权随机法(Weight Random):根据后端服务器不同的配置和负载情况,配置不同

的权重。


微信图片_20191118145914.jpg

最小连接法(Least Connection):后台服务器的请求有快有慢,根据连接情况,选择连接数最少的服务器来处理请求。


服务网关

微信图片_20191118145945.jpg


二、分布式系统基础设施

分布式session:将session统一存储在分布式缓存中,可以保证较高的读写性能。


Mysql的拓展

1、业务拆分

微信图片_20191118145948.jpg


2、复制策略

随着访问量增加,某个库的压力越来越大,可以将数据复制到数据库服务器上,前端通过访问Mysql集群中任意的一台服务器,能够读到相同的数据。


3、分库分表

当数据库单表的记录数达到千万级别甚至亿级且数据库面临极高的并发访问,需要对表的吞吐能力做拓展。

减少单表的记录数,减少查询所需时间,提供数据库的吞吐量。

微信图片_20191118150019.jpg


分表能够解决单表数据量过大导致查询效率下降问题,但无法解决并发的读写访问。对数据库进行拆分,提高数据库的写入功能,这就是分库。


微信图片_20191118150109.jpg




3、互联网安全架构

安全算法包括摘要算法、对称加密算法、非对称加密算法、信息编码。

摘要算法:MD5、SHA、Base64(可逆,不安全)

对称加密算法(安全性和秘钥有关):DES、3DES、AES

非对称加密算法:需要两个秘钥,一个公开秘钥,一个私钥。RSA算法

数字签名:MD5withRSA、SHA1withRSA


数字证书包括对象的名称、证书的过期时间、证书的颁发机构、颁发机构对证书的数字签名、签名算法、对象的公钥


4、系统稳定性

日志分析常用命令:1)查看文件内容 cat ab.txt;

2)、分页显示文件 less access.log;

3)、显示文件尾 -f 该参数用于监视File文件增长 ;-n Number 从 Number 行位置读取指定文件 tail -n2 -f access.log;

4)、显示文件头 head -n20 access.log;

5)、内容排序 -n 依照数值的大小排序 -k排列的列 -t参数指定列分隔符 -r 以相反的顺序来排序 sort -k 2 -t ’ ’ -n access.log

6)、字符统计 -c 统计字节数 -l 统计行数 -m 统计字符数 -w 统计字数 wc -l access.log

7)、查看重复出现的行 -c或–count 在每列旁边显示该行重复出现的次数;-u或–unique 仅显示出一次的行列;-d或–repeated 仅显示重复出现的行列 sort uniq | uniq -c -u

8)、字符串查找 -c :显示总共有多少行被匹配到了;-n :显示行号;–color :将匹配到的内容以颜色高亮显示 grep -c qq access.log 支持正则表达式

9)、文件查找 find path -option [ -print ] [ -exec -ok command ] {} ;

path: find命令所查找的目录路径;-print: find命令将匹配的文件输出到标准输出;-exec: find命令对匹配的文件执行该参数所给出的shell命令

-name filename #查找名为filename的文件

find . -print 打印当前目录所有文件

find ./name/log -name access.log

10)、归档文件 -c: 建立压缩档案;-f: 指定包的名字;-v:显示所有过程

tar -cf aa.tar file god

tar -xf aa.tar

11)、url访问的工具

<p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-spac