大型网站技术架构之可扩展性

大型网站技术架构之可扩展性

可扩展性首要步骤:

1、将整个系统按照纵向划分多个层次(应用层、服务层、数据服务层),横向分割成多个模块

2、保证模块之间是高内聚、低耦合的,将耦合降到最低

实现可扩展性的方式(降低耦合)

1、使用消息队列来保证分布式服务之间进行通讯,这种通讯方式将服务之间依赖降低到最小,消费端只管消费消息并不关心消息产生者是谁,同样消息产生者只管往消息队列放数据不关心消费方有哪些。这样两者互不依赖,扩展性高,只需要他们之间产生和消费的消息结构一样就行

2、采用RPC进行服务之间的通讯,服务提供者定义好RPC 接口给服务消费方进行调用,只要保证接口不变,服务提供者可以以多种方式实现接口,服务消费方并不关心接口是如何实现的。

分布式服务的意义

传统应用的方式是将应用拆分成多个模块,然而模块与模块之间进行调用完成业务逻辑,但是当业务很大时,模块也越来越多时就会导致以下问题:

1、代码量大了,编译和部署很困难

2、代码不易管理,代码冲突多

3、模块之间的耦合度高,很难扩展新的功能

4、一个应用中数据库连接池为10个 那么如果部署的应用很多时就会耗尽数据库中的资源

5、开发效率不高,因为很多人都维护同一个应用,有时不能并行开发

如何解决?

服务拆分:将整个应用拆分成不同的服务,以集群方式部署在物理机上,向外提供服务,

服务拆分方式:

  • 纵向拆分:一个大应用中拆分出多个独立的小应用,分别部署在不同物理机上

  • 横向拆分:从各种应用中抽出公共业务逻辑然后放到一个服务中,例如不同应用中都需要有用户信息和用户登录,这个时候可以抽出一个用户服务供应用层进行调用

Dubbo支持协议和序列化方式

序列化:将某中数据结构或对象转化成二进制字节数组,不同的序列化转化成不同格式的字节数据,反序列化过程相反

默认支持的是 Dubbo协议+Hessian序列化方式 特点:长连接、传输数据小、高并发

RMI+java序列化:短连接、适合传输文件

Hessian+Heassian序列化: 短连接、适合传输文件

Http+json 序列化

WebService+soap序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值