zoukankan      html  css  js  c++  java
  • 京东中间件应用实战

           在互联网应用研发过程中,中间件扮演着极其重要角色,因为数据存取、服务划分、消息传递、

    负载均衡、DNS、CDN等等。

           中间件在互联网应用开发中有着重要作用,其中以微服务、数据存取、消息队列三大中间件最

    为重要。

           微服务,最早程序研发是一个大的整体,存在问题研发困难,困难主要表现在修改后程序容易

    导致其他模块不可用,单体程序还存在一个流量预估难题,平时还好电商大促流量突增,单体程序

    流量预估难度极大,而微服务一下子将问题简化多个量级,只要预估好每个人维护微服务程序就可

    以了。

           JD微服务是自己研发框架,与dubbo相比整个架构设计紧凑简洁,dubbo相比设计扩展性强,

    各有优劣。核心差异不大,线上有个大流量服务大促时6000万/分钟,100万qps 150台4核16G容

    器。dubbo是阿里开源好东西,对业界微服务化极大推动,感谢开源,dubbo能够支持千万级、亿

    级每分钟掉用量处理,是极其优秀框架,最近又重启更新,需要用到微服务的可以放心用起来。

           微服务本身客户端实现软负载均衡,节省大量硬件作为负载均衡使用,缺点也是有的,微服务

    横向扩展容易,纵向也能够方便分层,但尽量不能分太多层,因为每层均存在网络耗时。

           记得app首页入口图初版服务,单个容器规格4核8G内存50G硬盘,但个容器能处理请求10万/

    分钟,而且还可以加量继续压,轻轻松松完成c100k处理。

           数据存取,存储读取是应用程序永恒主题,分布式缓存redis这篇文章介绍过大型电商互联网架构中redis运用

    redis内存缓存是快,天下武功唯快不破,但是内存目前还是极其昂贵资源,分布式文件系统,Google

    大数据三架马车之一bigtable,能支撑Google搜索引擎对于网页存储与检索,感兴趣也可进行研究使用,

    遗憾是google未开源,但百度开源了分布式文件系统BFS对应HDFS、以及分布式数据库TERA对应

    bigtable,据官方公开文档查询性能在10ms以下,进行参数设置性能能到1ms。

           消息队列,消息队列在为复杂程序节藕,大公司不同部门系统、模块之间数据通讯,移动端数据上

    报等多个重要流程,均离不开他,在数据通讯传输占有核心地位。

           清晰记得新浪微博,在初期有一段时间点赞时响应极其慢,最尴尬的事还经常失败,用户体验极差,

    简直让用户抓狂,后来看到网上分享了解到是因为点赞包含多个流程,在原微博上点赞加一,在自己用

    户上增加和这条微博点赞关系,权重计算处权重加一用于微博feed分发这条用等等逻辑,再一次需要全

    走完非常慢,用消息队列节藕,点赞发消息就可以给客户端反馈成功,性能呈指数级提升,各个模块取

    消息进行消费处理进行相应操作就可以了,用户体验极大提升。

           对于数据交互通信场景,了解到大数据那块数据分两块一个是离线hive表交乎一个是读取mysql或提

    供微服务拉取数据交互,有前边这些还不够,因为又个需要及时增删改场景就需要消息队列进行处理,比

    如评论或问答用户回答质量差这时就需要,删除消息将质量差评论、问答删除掉。对了目前各大互联网

    公司用的比较多消息队列是Kafka以及ActiveMQ。

           数据上报场景,移动时代数据点击、浏览、GMV、转化率等各个指标都离不开数据埋点上报,个性

    化推荐系统特征工程中数据汇总上报也离不开消息队列,上报流程一般是Storm实施消费消息数据落到大

    数据HDFS、HBase等。这个过程中消息队列都是必不可少的。

           互联网公司中间件占有重要地位,对于应用快速开发,数据稳定访问,数据上报等,服务高性能、高

    可用发挥着重要作用。中间件之中又以服务划分、服务治理,数据存取,消息队列中间件最为重要。

            其他中间件,例如JD本身有自己研发UMP能方便监控应用性能、可用率、容器cpu、内存、线程等多

    个指标,开源比如性能监控有大众点评CAT。再有智能DNS、CDN、负载均衡lvs、haproxy等等中间件也

    在互联网架构中发挥这重要作用。

            容器本身在JD也发挥着重要作用,线上服务100%在容器中,大数据spark那些据了解也在容器化进行

    中。以docker代表容器化技术,cpu、内存隔离性好,网络吞吐也极高,是一种极其优秀技术。

           docker目前存在问题,大促时有些个别机器,它的服务cpu、内存占用过高影响其他容器里面服务,这

    种情况备战期间要仔细观察,尽量和负载高应用避开,这种问题个人看到占比极其小,容器技术在互联网公

    司目前发挥着重要作用。

            写出来记录一下,一是为后续查找方便,另外如果对读者如果遇到相应问题正在一筹莫展,文章如果能

    带来一些启发那就更好了。

          扫码关注公众号

  • 相关阅读:
    springmvc最简单的搭建,初学者必看
    搭建服务器需要的那些
    jaxb使用
    Memcached Java Client API详解
    memcached client --ref
    使用Dom4j解析XML
    架构整洁之道
    架构的整理
    VMware虚拟机的三种联网方法及原理
    软件开发进度管理
  • 原文地址:https://www.cnblogs.com/freedommovie/p/7990987.html
Copyright © 2011-2022 走看看