zoukankan      html  css  js  c++  java
  • 云时代架构读后感(十五)

    海尔电商峰值系统架构设计

    原文地址:

    https://mp.weixin.qq.com/s?__biz=MzAwNjQwNzU2NQ==&mid=401045357&idx=1&sn=7ad89ac2cc110cf478b3287062d0821a&scene=21#wechat_redirect

    站在巨人肩膀上的SOA架构

    随着电商业务开展和业绩增长,系统结构和逻辑变得越来越复杂。为应对业务规模和复杂性的增长,需要将系统按照细分专业领域拆分;为应对流量和交易的增长,需要将网站进行大量子站拆分。这种状况下,SOA在保持清晰的系统结构和良好的逻辑组织方面提供了有力保障,为业务优化调整及新业务的开展带来巨大收益。

    通过服务封装和严格分离,为电商平台实现高伸缩性打下坚实基础。实现高伸缩性的主要工作集中在服务内部,对客户端影响的评估和改造工作也变得非常清晰。这将大大降低了实现高伸缩性的难度、工作量和实施周期。

    Dubbo是阿里提供的一个优秀的开源服务框架,在高并发情况下具有优秀的性能表现,海尔电商的SOA架构全面基于Dubbo服务框架。关于Dubbo框架的详细介绍可以参考GitHub上的Dubbo项目文档。下面对Dubbo框架工作机制进行简单介绍。

    面临的挑战

    产品的检索和展示在电商平台中具有举足轻重的地位,贯穿用户浏览、购物整个过程,以及订单交付全流程。产品服务需要为整个平台提供数据请求和检索服务,而各品类的产品差异性非常大,这给产品服务设计带来了巨大的挑战。

    将页面或者部分页面的静态化是一种非常有效的优化方式,可以极大地降低对后台服务和数据的请求。但静态化带来的最大弊端就是服务端丧失了控制力,使得一些深入的自动化、智能化策略难以应用。因此,我们希望通过提升服务端的性能和伸缩性,来避免静态化的方案。

    性能和伸缩性是电商平台的关键指标。为了保障系统性能和伸缩性,不少时候我们需要牺牲或者完全拒绝某些功能,或者降低系统的灵活性和扩展性等。在产品服务架构设计阶段,我们努力思考和研究着一种可以鱼和熊掌兼得的解决方案。

    产品服务架构

    产品服务分不同集群进行部署,面向Web应用和其他服务的集群在运行期间几乎不会产生数据库请求,因此不管网站访问量和交易量多高,数据库都不会产生压力瓶颈。在系统峰值期间,只需为Web和服务添加服务器即可,实现了高伸缩目标。

    效果

    性能:最高峰值2.6亿次/天,平均耗时60毫秒/次,后续对编译器和执行引擎进行优化,性能还有更大的提升空间。

    伸缩性:在一定条件下接近线性伸缩,所有使用产品服务的地方无须出于性能和系统压力原因额外设计其他方案,直接调用产品服务即可。

    通用性:不会因为电商平台性能和伸缩性要求而受到任何限制,可以像开发内部管理系统PDM一样设计产品数据模型,并且直接用于其他在线服务和前台Web应用,尽可能达到通用灵活的目的。

    扩展性:通过逻辑模型屏蔽了底层的数据模型,将数据模型的优化、扩展工作量以及影响范围降低到最小限度,提升了电商平台中产品服务的可维护性和扩展性。

  • 相关阅读:
    我的安卓开始
    OLAP的一些知识——接下去的项目需要的背景
    关于Java接口
    Hexo+Github/Coding免费搭建个人博客网站
    手机自带输入法emoji表情的输入,提交及显示——前端解决方案
    改变函数中的 this 指向——神奇的call,apply和bind及其应用
    什么是jsonp?——使用jsonp解决跨域请求问题
    玩转angularJs——通过自定义ng-model,不仅仅只是input可以实现双向数据绑定
    利用jquery mobiscroll插件选择日期、select、treeList的具体运用
    转载:中年程序猿的迷茫,你还在深究技术吗?
  • 原文地址:https://www.cnblogs.com/wys-373/p/11020754.html
Copyright © 2011-2022 走看看