业务架构
功能分离:为什么要进行功能分离:确保核心功能的高并发和高可用
按照功能的重要程度:划分为核心功能和非核心功能
例如:在亿级规模的用户中台系统中,假设有注册,登录,用户信息,日志,行为分析等功能。问题是:哪一个更重要?
例如:在用户中台系统中,对于一个亿级用户,日活2000万的业务来说,平均每天注册用户是10万左右,假设2年之后,用户的修改信息可能还不到1万,但登录的功能是2000万,很明显我们应该保证登录的才是核心。登录是核心功能,注册,用户信息是非核心功能,登录功能一旦有问题,其他的业务系统,就不能登陆了,非核心业务功能即使有问题,暂时也不会立刻影响业务系统的使用。因此,优先保证核心功能正常,是我们首先的目标。
其次要核心功能和非核心功能,有不同的对应策略:
隔离策略,重试策略,功能降级策略
按照功能的流量特点:
在秒杀系统中,这里需要区分,可以分为流量突发型,流量平缓型的功能和突发流量的功能做好隔离。
电商平台:秒杀功能,电商功能
流量突发,流量平缓型的应对策略:
首先做好隔离策略,另外,对突发流量的做好独立的伸缩扩展策略。
功能分离之后的应对:
功能隔离
如何隔离:
1、单独的域名,单独的接入层、隔离的服务层、单独的缓存,单独的数据库
域名隔离、 代理隔离、微服务隔离、缓存隔离、数据库隔离
2、只要核心功能和非核心功能存在共享的资源,就有可能因为非核心功能影响核心功能。举个最简单的例子,如果数据库共用一套,那么非核心功能如果出现了大量的整表查询(慢sql),核 心功能同样受到影响。
3、只要流量突发型、流量平缓型功能存在共享的资源,就有可能影响流量平缓型功能。
4、假设:核心功能、非核心功能共享了缓存服务器,就可能会由于非核心功能的操作影响了缓存的性能, 甚至出现问题.
解决方案:缓存物理隔离后,就更加保证了核心功能的安全,
功能降级:
1、当出现故障的时候,当出现瓶颈的时候,可以将非核心功能直接降级,保护核心功能不受影响
2、拆分为核心功能和非核心功能后,虽然物理上两者隔离了,但有的业务还是需要核心功能和非核心功能 配合才能完成,这就存在了一定的风险。
3、比如说大量用户登录时,可以停止行为分析、登录日志等非核心功能。以保证核心功能不受影响。
降级的实现方式通常有手动和自动
1、自动方式是程序调用发生问题时,自动降级,如调用某服务时,响应时间超过预订阀值,自动降级 微服务的熔断,就属于自动降级
2、手动方式是使用配置中心,对系统中可降级的服务都设置好开关项,当需要降级时,在配置中心中进行 操作,配置中心进行下发变更通知
3、可以开发了一个后台运维管理程序,当需要停用某个功能的时候,只需要在后台上点击一个按钮就能够完成,花费时间只需要几秒钟。