以微信为例,一万字讲清系统复杂性和风险(一)

大家好,我是皇子

前面一篇,我们尝试理解了并一句话概括了架构设计的目的是“为了理解和管理系统复杂性和风险”(一句话概括架构设计的目的是什么?)。

关于系统复杂性和风险的问题,是我们在软件开发过程中必须面对的挑战,因为复杂性是系统的固有属性,它来源于系统的结构、功能、行为等多个方面,而风险则是复杂性的直接产物,它可能导致系统的性能下降、成本增加、甚至系统的失败。下面我们就以一个全球领先的即时通讯和生活服务平台,一个复杂的、多元化的、动态的微信系统为例,来一起全面认识下系统复杂性和风险

一、理解系统复杂性的来源

规模复杂性

规模复杂性包括:数据复杂、业务逻辑复杂

1、 数据复杂

微信是一个拥有数亿用户的大型系统,它需要处理的数据量非常大,导致它的数据复杂包括:

1)微信需要存储、实时处理数十亿用户的聊天记录、朋友圈信息、支付记录等数据,需要采用分布式计算框架,通过任务调度、负载均衡等技术,保证了数据的高效处理;

2)需要对用户的这些数据进行分析,采用大数据分析技术,通过数据挖掘、机器学习等技术,提取了数据的价值信息,以提供个性化的服务,包括广告推广、公众号推荐、视频号推荐等;

2、业务逻辑复杂

除此之外,微信需要处理的业务逻辑也非常复杂的:

1)微信的消息推送涉及到即时通讯、群聊、公众号消息、小程序消息等多种类型的消息。这就需要微信的系统能够实时处理大量的消息推送请求,保证消息的及时送达,同时微信还需要处理消息的存储、同步、搜索等问题;

2)微信的好友关系管理涉及到添加好友、删除好友、查看好友信息、设置好友权限等多种操作,同时微信还需要处理好友的推荐、搜索、排序等问题;

3)微信的支付处理涉及到创建支付、完成支付、查询支付、退款支付等多种操作,这就需要微信的系统能够处理大量的支付请求,保证支付的正确处理。同时,微信还需要处理支付的安全、效率、稳定性等问题,这都增加了业务逻辑的复杂性。


关注我,一起成长

既然看到这里,随手点个赞或在看再走呀

请使用浏览器的分享功能分享到微信等