软件可扩展性

81 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


1. 2B和2C什么意思****

2B英文为to business,汉语翻译为"面向企业",比如生产芯片、轴承等零部件企业,生产的产品明显是面向其他企业的,就可以说这些公司是"2B"的公司,也可以说这些公司生产的产品是2B的。2B一般等同于B2B。

2C英文为to customer,汉语翻译为"面向消费者",比如生产冰激凌、水饺等食品企业,生产的产品明显是面向普通消费者的,就可以说这些公司是"2C"的公司,也可以说这些公司生产的产品是2C的。2C一般等同于B2C。

软件行业也是同样的道理,商用软件如CRM、排队系统等是2B;

民用软件如美图工具、抖音等娱乐软件明显就是2C的。

2. 软件可扩展性****

blog.csdn.net/hxpjava1/ar…

可扩展的软件内部各部分之间较少依赖或耦合,满足开闭原则,当系统增加新功能时,不需要对现有系统的结构和代码进行修改

(1) 开发视角的软件可扩展性****

1) 采用事件驱动架构

事件驱动架构指的是:在低耦合的模块之间传输事件消息,保持模块之间的松散耦合,通过事件消息来完成模块之间的通信。 事件驱动架构最常见的实现方式就是使用分布式消息队列。

2) 分布式消息队列

应用通过远程访问接口使用消息队列,进行消息的存取操作,从而实现分布式的异步调用,扩展时,只需要订阅新的主题即可

3) 使用分布式服务架构

分布式服务可以通过接口降低系统的耦合性,不同的子系统之间通过相同的接口描述调用服务

4) 可扩展的数据结构

比如使用 NoSQL 数据库,只需在代码指定表名就能创建表,字段可以在写入数据时再指定,这就使得应用的数据结构可以随意扩展

5) 异步处理

减少调用依赖

6) 为可扩展软件编写无状态的程序

无状态是高可扩展性软件的先决条件,无状态软件在请求之间不会共享任何东西,也不依赖于本地文件系统之类的东西

 

(2)  运维视角的软件可扩展性****

1) 满足垂直扩展

如果选择垂直扩展,那么需要增加更多的硬件资源来解决这个问题。

2) 满足水平扩展

多实例来达到实现目标

3. 伸缩性****

是指系统通过增加(或减少)自身资源规模的方式增强(或减少)处理业务的能力。

如果这种增减是成比例的,就可以称之为线性伸缩性。通常是利用集群的方式增加服务器的数量,以提高系统整体业务吞吐能力。