互联网时代是一个讲究合作共赢的时代。由于业务的拓展与项目的融合,能够充分思考出系统的内外特性,提前预留出扩展接口,保护内部系统稳定的同时,循序渐进的进行外部系统的融合对接,往往决定着企业业务及系统的健康稳定发展。
在进行系统架构设计时,对外要考虑从业务流程的拆解优化,系统的丰满完善,从而分化来自用户的高压请求,比如:在购买商品的前后环节中,加入优惠券领取,下单付款之后,加入抽奖免单等环节,既能从系统上分散用户的请求压力,又能丰富提升用户的购物体验;
在系统负载上,也可根据业务的系统特性,结合用户对业务系统操作的占比权重,进行针对性的负载分区设计,合理地缓解分化来自不同业务点的用户请求。比如电商系统中,商品浏览、促销抢购、订单查询,是用户经常操作的系统场景,假设同一时刻有100个用户正在使用该电商系统,那么同一时刻各个业务系统的操作人数占比为:60:20:10:10(其它系统),计算出各个业务系统的操作热度占比之后,就可以针对性地进行系统服务的前端负载设计,各个服务系统在服务器资源上的分配占比(内存、CPU、磁盘、缓存等);在代码开发时,也可以根据这些对外的业务特性进行有的放矢的编码及优化了。
在系统架构的内部设计中,可以预先分析出用户的集中操作点,又或者说是密集业务点、公共业务区(行业里通常也叫做核心业务点,这里阿K认为核心业务点未必是公共密集点,所以这里特别强调的公共密集操作的业务点)。根据这些密集业务点,以及其对周边关联业务系统的相互影响程度,进行内部集中优化设计,从而保证这些内部密集系统的高性能、高可用。
因为这些公共密集点,深深影响着整个核心系统的稳定性和用户的系统体验好感度。比如电商系统中,商品、购物车、订单、降价促销通知、付款、优惠券,都是用户会集中操作的公共点,这些公共部分除了是密集的业务点外,每个部分又和其他业务系统有或多或少关联性,就构成了所谓的公共业务区的概念。
针对这些公共点公共区的设计,就可以采用CDN、数据缓存、热点数据静态化、高可用调度器、MQ、分布式事务锁等机制方案,从技术组件上对密集操作的核心业务数据进行设计优化。
在服务器资源分配上,也可以针对这些公共密集业务数据,进行对应的优化分配,比如商品的图文详情可以放在CDN服务器上,购物车信息和订单状态可以缓存在Redis上,降价促销通知可以通过ElasticJob抓取到之后,通过mq的方式触发对应的短信或邮件发送服务等。这其中CDN服务器可以通过第三方购买来获得加速,Redis节点上可以多分配一些物理内存以提高缓存效率,ElasticJob调度器可以低内存多(伪)实例做成HA高可用架构;也可以根据实际用量特性,考虑把ElasticJob和MQ部署在相同的节点中,以节省服务器资源。
在编码开发上也要根据这些公共业务对象的特点特性,认真仔细地思考,以提高公共业务服务的程序响应效率和稳定性,公共业务对象的系统通用性、流通性和可扩展性为主要目标,进行充分的编码和完善的测试。
以上讲述的系统架构设计方法,就是所谓的“开合”。“开”,是打开的意思;“合”,是闭合的意思。所谓“开合”,从系统架构设计的角度看,“开”就是公开列举出系统对外提供的服务接口,分析其中的用户及系统行为,进行针对性的设计和优化;“合”就是列举出系统内部的密集业务点,分析出其中关联影响到的业务系统(区),进行技术上的集中设计与优化。
综合来看,就是可以从不同的角度进行观察分析,外看联动,内看同异;不论是在系统架构、系统设计、开发编码上都是可以适用的。
网友评论