在零售创新的趋势影响下,恰逢一年一度618来临之际,在高频、高额、高密度的交易场景下,如何能为用户提供稳定而流畅的购物流程?如何做到通过技术创新打造品牌和合作商的基础设施服务商呢?
在刚刚结束的京东云技术沙龙上海站活动中,多位京东的技术大咖与开发者面对面就零售业以及社交电商方面的核心技术以及成功解决方案进行了深入探讨。
沙龙现场座无虚席
现场百余位开发者热情参与了交流与互动,尤其对“大促”下的数据库服务、企业级监控的设计与实践、社交电商的方方面面以及区块链的智能化溯源等诸多技术领域十分关注。
我们将沙龙中的部分内容整理、总结后放到了本文中,希望也能给相关的从业者们提供参考。
京东数据库服务如何应对“大促活动”?
京东云产品研发部高级总监 郭理靖
众所周知,京东商城业务繁多,很多业务在研发设计初期并不想选用太多种类的数据库,因为并不知道着手的业务规模大小,所以开始选择只使用MySQL是最简单的,基于研发的速度考虑有时候还选择写入日志和大字段数据。随着数据积累量增多,用户规模扩大,未来会涉及数据切换的问题。因此,对于这些“后来居上”的业务,还是要进行一些数据架构优化的工作。
京东云数据库“上马”了一些弹性数据库服务,可以做到在一台物理服务器上同时配置多个数据库,将单机利用率提升到比较高的水平;同时配置的灵活调度系统,能够在两个数据库之间完成对压力不大的数据库数据迁移,能帮助客户有效地进行成本控制。另外,在使用MySQL的基础上,性能不可避免地受限于机器,京东商城内部还使用Jproxy这类分布式数据库服务。郭理靖表示,在京东商城的实践中,针对线上系统选择构建两个机房,分别是生产环境以及在灾备环境。
关于智能分析,京东云在助力电商的过程中,一方面着手SQL日志分析以及容量分析,例如连接数是不是一直在增长、IO压力、CP压力等;同时也尝试做一些故障自愈以及磁盘清理等。
在“京东云的服务实践”方面,在云端提供丰富的数据库服务,例如MySQL、Percona、MariaDB、SQL Server、MongoDB等。从京东云的统计角度来看,国内开发者使用MySQL可以高达95%,另外5%会使用Percona或者MarinDB。
从海外的调研数据来看,海外数据库用户大约80%以上用户都在用MySQL,而20%以下的用户会选择用MariaDB和Percona,之所以这有么大的差距,原因可能在官方在国内外的宣传力度上明显的区别的原因。另外京东云还在安全、审计、日志等诸多方面提供了丰富的功能,另外还提供了Binlog备份和下载。
在监控引擎方面,京东云的尝试也是比较细致的,其中包括监控服务、报警服务等。值得提及的是,其中所有监控项都可以设置规则,比如CPU内存超过70%,就可以设置一个短信报警,而其中所有的指标都是对接到云监控系统。“我们也支持只读实例创建,需要只读最大支持创建8个只读实例,每个只读实例都分配一个独立域名,都可以用域名进行访问。”他补充道。
谈及数据运维,如何做到故障自动切换?京东云为此设计了比较完善的自动化系统。起初都是手动切换,选择这样的切换方式主要是担心误切的情况发生,毕竟很多服务通过域名链接数据库,而域名的切换会造成一些延时,时间太长又是服务不可接受的。现在数据库的故障都已经进化到自动切换了。
数据安全性方面,采用了云硬盘加密的功能,对于用户担心的数据库信息“被偷窥”的问题,只要启动了数据加密的功能,使用云端RDS就可以充分放心享受其安全保障的服务。对于哪些IP可以访问特定的数据库这个事儿,灵活设置白名单即可。
重点强调的一点,在京东云数据库服务中还涉及到DRDS,所谓DRDS是分布式关系型数据库,追溯本源是将京东商城上的Jproxy技术移植到京东云上,主要作用还是在数据量特别大的情况下,单机无法支撑的前提下完成分库分表,操控起来比较便捷。
DRDS服务主要解决了以下几个困难:
1、随着数据量和访问量的增长,单机数据库会遇到很大的挑战,依赖硬件升级并不能完全解决问题,也就是单机数据库容量瓶颈亟需被重视;
2、传统数据库容量扩展往往意味着服务中断,很难做到业务无感知或者少感知等,被认为是扩展窘境;
3、更重要的一点,传统数据库使用成本较高,当业务数据访问量增加到一定程度时,传统数据库需要依赖特定的高端存储和小型机设备,对于用户而言,成本较高。但DRDS的使用,恰好就是可以有效地帮客户进行成本控制。
具体来说,DRDS服务提供中间件,例如针对用户表,可以将用户表中的ID进行拆分。当需要查询用户时,并不需要修改SQL语句,DRDS会去解析语句,发现访问的用户数据表,用户ID等信息,其实DRDS起到的作用就是解析SQL语句、分发SQL语句以及汇总SQL语句给用户端,方便用户可以更多聚焦自己的业务逻辑开发等,同时有效提高整个性能。
同时,DRDS可以做到多台部署,但值得注意的一点,整个DRDS系统性能受限于后端实例数量。简单来说后端的实例量越多,DRDS的性能越好。通过实测,DRDS中间件给SQL带来的延迟是非常低的,DRDS对SQL语句的解析速度进行了专门的优化 ,因此因中间件带来的延迟基本也都可以忽略不计了。
DRDS本身不存储数据,数据存放在后端的RDS MySQL 数据库上。为保障系统稳定性,每个分库所在的MySQL版本必须一致。DRDS会在每个RDS实例上创建8个分库,另外还会单独创建0号分库,用于存放非拆分数据。
系统的最大处理能力取决于分库的数量,因此在需要创建之后就应该规划好整个系统的容量以及能力,比较好的做法是根据初步的规划,前期使用小规格的MySQL实例,但足够多的分库数,这样就可以预留出足够的扩容能力。
在技术分享中,郭理靖还系统介绍了扩容的方方面面,例如两核4G的DRDS,性能相对较小,如果将后端RDS升级到更高配置,就被称为是垂直扩容,操作起来十分容易。无论是水平扩容还是垂直扩容,尽管具体的操作方法不同,但过程平滑且随时随地都是共通的。
尽管DRDS 与传统的单机数据库相比,在扩展性上有了巨大的提升,但同时也带来了一些限制,例如可保证同一个分库中的事务一致性,但不支持分布式事务;只支持单个分库内的join操作,不支持跨库的join;只支持UTF8字符集,因此并不是任何基于MySQL的应用都可以无疑迁移到DRDS上,还需要进行一些改造。
企业级监控系统设计与实践
京东云产品研发部总监 郑永宽
作为本场沙龙的第二位分享嘉宾,京东云产品研发部总监郑永宽为开发者们现场带来了主题为“企业级监控系统设计与实践”的技术演讲。
监控是什么?监控是运维生命线。
监控解决什么问题?远远不止发现问题!
监控还需要解决发现问题以后的定位,和定位后的止损,从而降低故障MTTR,即故障平均恢复时间。像京东这样的大体量电商,如果发生不明原因的宕机所导致的损失是十分惨重的。为了高效解决降低故障恢复时间的问题,在故障发生之前提前做好相应故障的恢复预案;在故障发生之后明确故障类型并且准确定位故障,是非常有效的手段。
为了解决快速响应的问题,监控系统通常需要具备丰富的数据采集手段、多维度数据实时聚合计算、准确的异常检测、及时的告警通知、可定制的dashbord、根因定位与辅助决策推荐,以及预案平台等功能,通过以上功能实现快速止损、业务高可用/可扩展等目标。
根据以上功能定位,京东云会针对每个系统不同的业务特征,提供故障恢复预案推荐,用以来保证系统的高效运转;对于监控系统来说,无论是发现问题、定位问题还是解决问题,了解其中循环迭代的系统状态十分重要,京东云的监控平台根据丰富的监控手段可提供可靠有效的系统运维情况反馈,同时基于监控数据和业务分析进行多样化的预案推荐,帮助业务快速恢复。
具体来说,我们首先定义了一套统一的监控标准:即监控需要覆盖基础-存活-性能-业务四个层面,从而保证了采集数据的全面,进而避免监控遗漏。即基础监控涵盖了机器的基本指标,比如cpu、内存、硬盘等;存活监控则聚焦机器和服务进程的存活性;性能监控关注服务对外表现的性能指标,比如PV、平响、错误码等;业务监控则是从用户角度,监控系统是否提供正常服务。进一步,根据不同的报警,我们可以定位到相应的问题,再辅以对应的预案平台,从而确保了故障第一时间定位与恢复。
监控系统需要保证数据采集手段丰富化、计算聚合多样化、存储高效化以及数据展示有效化等几个方面。其中数据的存储以及数据可视化展示等是监控系统最基础的需求,不管多庞大的运维系统都是如此。
京东云采用多种采集方式,包括Agent采集,API推送,外部探测点。通过遍布全国的探测点,可以模拟发起各种协议的访问,同时提供API推送接口,支持用户自己发送数据过来,可以进一步展示用户需要的数据。另外我们自研的tsdb时序数据存储,采用基于Cassandra+自研cache+esmeta的方案,我们将最近3h的数据存入自研cache,增加了查询的时效性和可靠性。其中自研cache基于的Facebook论文gorilla实现,追求极致的压缩比。通过这些手段,存储的空间可以降低到1/10,同时保证了查询性能。
另外京东云的监控CMDB表现出色。首先CMDB可以将资源和业务同时管理起来,这是监控CMDB解决的第一个问题;另一方面,大规模集群中的某台机器发生问题后,通过JNS名字服务可以迅速定位受影响的业务,并基于CMDB提供业务/应用/集群的监控配置推荐,这是监控CMDB重点突出的地方。
谈及如何定位问题,郑永宽总结道,首先监控可视化是关键一环,多维度的聚合计算使数据更有意义,这是基于京东云多年的运维经验总结得到的。京东云的监控体系可以定位多种故障原因,例如某一业务是否有变更,是否配有相应的报警,网络等资源是否异常,是哪个业务出现的问题等……通过以上方面的监控,我们可以知道某一业务的故障恢复操作的执行情况,此方式对故障快速定位以及查找故障来源非常有效。基于以上确认故障原因的能力,京东云快速迭代升级开发了变更可视化产品,对可能导致故障发生的所有问题来源进行事件监控,从上线操作、配置变更的单任务监控到平台全局事件的监控,进一步助力京东云监控体系定位问题能力的提升。
问题定位后,为使用户接收到有意义的报警进而快速回复问题,我们对异常问题进行分析合并,京东云支持各种策略的合并,可按照固定接收人报警、不同业务范围报警、固定时间报警等策略进行报警,减少告警风暴,另外对于通知下游的对接,我们实现了邮件、短信、微信、电话等多种方式报警。
未来京东云还会着手配置化管理功能的优化,更好支持事件自动恢复。“结合监控CMDB和报警设置,我们可以真正把故障和报警联动起来,对于相关的报警事件,监控系统可以自动调取对应的预案,从而达到系统的故障自愈的目标。”
社交电商SaaS产品技术架构
京东云应用研发部社交电商负责人 赵金勇
从整个电商发展来看可以被总结为”四化“,分别是去中心化、场景化、碎片化以及个性化。我们发现流量成本越来越高,“带领着”获客成本、品牌商运营成本也一路居高不下,这恐怕就是品牌商自己不做运营选择其他途径的原因,正所谓“品牌形象宣传去中心化” 就是这个道理。
所谓社交电商,必然与”社交”关系密切,进而社交工具自然必不可少。除了凭借五花八门的推送工具,京东云社交电商还凭借京东与生俱来的海量商品以及优势供应链屡获成绩。基于京东大数据营销的能力,海量用户的精准画像以及商品推销、智能选品等这些稳定可靠的基础服务来打造系统。
京东社交电商支持三级分佣自动结算、灵活设计类目返佣点数、自定义会员晋升规则、自动统计团队销售业绩以及丰富的营销推广玩法等。
技术架构方面,京东云商微服务架构是数据库、硬盘以及统一运维。其中公共平台、开放平台、装修服务还有市场、数据搬运、流量统计等系统都是基于微服务架构,业务层提供统一的、原子化的API接口, 上层业务在这些接口之上构建而成。”
京东社交电商分三端,分别是买家端、供应商端和PC端。社交电商的系统已接入到京东庞大的商品池,大家可以在整体的商品池中挑选自己的产品,共同的良性生态就此构建。
此外,我们还提供基于京东大数据打造的鹊桥插件,鹊桥连接人和货,完成精准营销。从交易完成之后,所有交易数据和货源数据以及货源行为数据汇总到一起,京东大数据平台就对所有的数据进行分析,完成实时监控,在此基础上基于数据驱动彰显出广告优化、客群聚类、千人千面、自动化营销。
“整体的系统是基于京东云技术来构建,京东云作为京东对外赋能的窗口,提供一些可信赖的基础服务,包括技术服务以及系统支持,这部分主要涉及电商云”。
举个例子来说,北京网库信息技术股份有限公司是国内基于单品供应链的B2B电子商务服务公司,以打造中小微企业的全产业正品采购平台为使命,关注企业优势单品的在线供应链应用,服务包括在线采购、在线批发分销、在线定制等。
自成立以来,公司服务平台积累中小企业用户数据1800多万,旗下B2B平台注册中小企业会员近200万家,为全国超过30万家中小企业提供基础B2B电子商务应用服务,并与其中2400多家具有单品优势的实体企业共同构建了单品电子商务交易平台,在此过程中与京东社交电商开展了密切合作。
基于企业级区块链框架系统JD Chain的技术实践
京东数科区块链产品创新负责人 张作义
京东区块链品牌名叫京东智臻链,京东区块链的架构体系分为JD Chain和JD BaaS(Blockchain as a Service)两部分,JD Chain作为核心引擎,在数据账本、共识协议、密码算法、存储等方面引入新的研究成果和工程架构,解决处理性能、伸缩性、扩展性、安全性等基础和关键的技术问题,建立创新性的技术架构和应用方案。JD BaaS是服务平台,提供灵活易用和可伸缩的区块链系统管理能力,无缝融合包括JD Chain、Fabric在内多种区块链系统的部署管理,向企业级用户提供公有云、私有云及混合云环境快速部署能力,降低企业使用成本,加快应用落地。%uA0
谈及服务层,大家比较关注身份、权限、资源调度管理、证书管理还有版本控制、日志记录等。“在今年发布的《2019京东区块链技术实践白皮书》中,5大类、14个应用案例的信息都在列。”
如果是BaaS可以被认为是汽车发动机的“底盘”,有了底盘就可以围绕底盘配置其他零部件,JD Chain就是里面的“发动机”,适用于不同的场景的区块链应用场景。BaaS帮助企业或者开发者搭上区块链的“顺风车”,而且京东也整合了很多在BaaS平台基础上的应用服务。
“JD Baas、JD Chain是京东区块链的两大技术架构体系。基于区块链去匹配各种各样的应用场景,主题就是怎么用区块链去创造真实的价值,也可以被称为是可持续价值。”
京东 JD BaaS平台比较重要的特色,就是身份认证服务,这也是区块链和联盟链不同的地方。联盟链是一个许可链,京东方面身份认证服务,例如身份注册、企业证照审核等一系列内容审核加入区块链,以保障联盟链各主体的合规性、关联性、安全性。
在这个过程中,无论是企业还是个人的身份认证信息都会存储到区块链中,在区块链节点之间做一个协同,包括对外展示都是基于身份认证发生一系列关系,这较之无认证的关系发生将有很大的区别,也是未来比较看好的方向。
京东自主知识产权区块链底层框架JD Chain于2019年3月正式宣布开源,在“万级交易处理、秒级交易确认、海量账户和交易、动态伸缩、账户存储、多核并行、密码算法”等方面符合经典区块链对存储、对计算的定义和要求,同时还把Key Value结构用现有recycle极大处理效率,这也是可以支持更高速度的原因。
零售、物流与数字科技等领域,是京东区块链主要服务的方向。例如参与广州互联网法院“网通法链”建设、区块链增值税专用发票试点、与宿迁的电子证照打通试点等,实际赋能数字存证、电子发票、电子证照等方面的诸多实际应用。%uA0
举个例子来说,区块链的数字存证。我们参与了北京互联网法院和广州互联网法院的区块链项目,需要把使用司法服务的内容搭载一条司法联盟链,主要可以实现什么作用呢?打比方说签署一个合同,去公证处公证是必要流程之一,如果有了这个联盟链,所有的操作都可以在司法‘朋友圈’实现。司法联盟链可被理解为是数字签名的技术,以此判断合同签署的合法性,同时签完的合同会及时备份到这条联盟链中,这样,法院、公证处以及司法鉴定部门,包括合同双方的签署人都能够及时获知该信息。
此外,京东区块链在防伪追溯方面做得最多,京东区块链防伪追溯平台曾经受住四五次大促考验,用户复购率、用户转化率明显提高,京东目标客群对追溯对消费体验升级、商品品质保证的高度认可。