本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 2B和2C什么意思****
2B英文为to business,汉语翻译为"面向企业",比如生产芯片、轴承等零部件企业,生产的产品明显是面向其他企业的,就可以说这些公司是"2B"的公司,也可以说这些公司生产的产品是2B的。2B一般等同于B2B。
2C英文为to customer,汉语翻译为"面向消费者",比如生产冰激凌、水饺等食品企业,生产的产品明显是面向普通消费者的,就可以说这些公司是"2C"的公司,也可以说这些公司生产的产品是2C的。2C一般等同于B2C。
软件行业也是同样的道理,商用软件如CRM、排队系统等是2B;
民用软件如美图工具、抖音等娱乐软件明显就是2C的。
2. 软件可扩展性****
可扩展的软件内部各部分之间较少依赖或耦合,满足开闭原则,当系统增加新功能时,不需要对现有系统的结构和代码进行修改
(1) 开发视角的软件可扩展性****
1) 采用事件驱动架构
事件驱动架构指的是:在低耦合的模块之间传输事件消息,保持模块之间的松散耦合,通过事件消息来完成模块之间的通信。 事件驱动架构最常见的实现方式就是使用分布式消息队列。
2) 分布式消息队列
应用通过远程访问接口使用消息队列,进行消息的存取操作,从而实现分布式的异步调用,扩展时,只需要订阅新的主题即可
3) 使用分布式服务架构
分布式服务可以通过接口降低系统的耦合性,不同的子系统之间通过相同的接口描述调用服务
4) 可扩展的数据结构
比如使用 NoSQL 数据库,只需在代码指定表名就能创建表,字段可以在写入数据时再指定,这就使得应用的数据结构可以随意扩展
5) 异步处理
减少调用依赖
6) 为可扩展软件编写无状态的程序
无状态是高可扩展性软件的先决条件,无状态软件在请求之间不会共享任何东西,也不依赖于本地文件系统之类的东西
(2) 运维视角的软件可扩展性****
1) 满足垂直扩展
如果选择垂直扩展,那么需要增加更多的硬件资源来解决这个问题。
2) 满足水平扩展
多实例来达到实现目标
3. 伸缩性****
是指系统通过增加(或减少)自身资源规模的方式增强(或减少)处理业务的能力。
如果这种增减是成比例的,就可以称之为线性伸缩性。通常是利用集群的方式增加服务器的数量,以提高系统整体业务吞吐能力。