前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >13个速度与激情般的开源中件间

13个速度与激情般的开源中件间

作者头像
王新栋
发布2019-08-27 14:54:36
2.2K0
发布2019-08-27 14:54:36
举报
文章被收录于专栏:程序架道

文/技术领导力社区

编辑/Emma

本文整理了阿里13个开源中件间产品的架构及功能介绍,结合阿里中间件团队的访谈及分享,涵盖了消息中间件、服务框架、数据层、应用服务器和大规模分布式稳定性平台等等。整体中间件在阿里生态中的分布,如下图所示:

01 服务框架-HSF

HSF旨在为阿里巴巴的应用提供一个分布式的服务框架,HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持,从而可以很容易的开发分布式的应用以及提供或使用公用功能模块,而不用考虑分布式领域中的各种细节技术,例如远程通讯、性能损耗、调用的透明化、同步/异步调用方式的实现等等问题。

这个图说明了HSF框架中每个组件在整个框架中扮演的角色,下面分别介绍下:

(1).服务节点对配置服务器列表的获取。伴随着web容器的启动,服务提供者和服务调用者向地址服务器获取配置服务器和Diamond服务器的ip列表信息,过程见上图的1、2步骤。

(2).服务的注册发布。服务提供者获取配置服务器列表后,将服务的相关信息(接口类全名、服务版本等)包含当前服务器的ip地址、端口等信息注册到配置服务器,即上图的3步骤。

(3).服务的订阅。当服务调用者的应用启动并获取配置服务器列表后,发送服务消费的相关信息(服务接口全名、服务版本等)到配置服务器订阅,然后配置服务器会通过“服务接口全名+服务版本”作为条件在内存中搜索,一旦获取到服务注册信息,就将对应的服务提供者的ip和端口发送到服务调用者的节点上,即上图的4 、5步骤。

(4).服务规则推送(如果需要)。如果对服务安全管控和流量控制有需求时,可以通过Diamond服务器提供规则设置界面,对指定的服务提供者和服务调用者设置相关规则,规则保存后,会在5秒内推送到与设置相关的服务器节点上。

(5).服务交互。在应用进行业务请求处理过程中,出现服务调用者对服务提供者的调用时,服务调用者会从已经保存在该应用节点上的服务提供者服务器列表里选择(阿里巴巴内部使用随机模式)其中一台服务进行请求的发送,服务交互期间是调用者和提供者两台服务器间的调用,无需通过中间别的服务器,这就是称为“去中心化”的主要原因。

02 消息中间件-Notify

notify是一款高性能,高可靠,可无限水平扩展,支持分布式事务,支持复杂消息过滤的与互联网时代紧密结合的消息中间件,是目前公司内部使用最广泛的一个消息中间件产品之一,承担着公司内部90%以上消息服务。他使用推消息的模型,集群可水平扩展,但不保证顺序,也不保证重复的消息中间件产品。

架构主要由notify client 、config server 、notify server 、data base组成,其中notify client为消费消息端, config server 为阿里巴巴许多服务注册发现中心,在这也相当于充当了服务发现中心, notify server 消息的发送端, database 为存储中心。

它的核心特性是:提供事务支持、不保证消息顺序、消息可能会重复、推模型,定位于无序消息投递,所以 更适用于 : 面向需要更加安全可靠地交易类场景,无序,推模式。

1、分布式事务特性,交易状态最终一致性的保证

可以保证业务操作和消息发送组成一个分布式事务,业务操作和消息发送就是一个原子操作,有这种业务场景的需求就可以选择notify。

2、推送的方式、消息的无序和最高实时的消息服务

因为是推送的方式加无序就可以保证最好的实时性,推送模型就是当消息发到服务端就会立刻无间歇推送到客户端.

3、双写特性

为了解决单点故障的问题,notify实现的是双写的方式,就比如在发一条消息的时候会同时写到两个database的实例当中,当两个实例都成功的时候才算发送成功,这就保证了消息存储的高度可靠,有需要高度可靠的数据的处理就可以用notify

4、支持消息属性表达式过滤

如果有业务场景比较复杂的,需要有复杂的筛选条件下的业务就可以选择notify.

03 消息中间件-MetaQ

MetaQ是一款分布式、队列模型的消息中间件。分为Topic与Queue两种模式,Push和Pull两种方式消费,支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。

MetaQ的开源版就是rocketmq。这里就不多做介绍,感兴趣的同学可以到github上查看文档和源码。 开源地址:https://github.com/alibaba/rocketmq

04 数据层-TDDL

TDDL旨为用户提供在线数据库服务。TDDL部分兼容MySQL关系型数据库,并提供数据库在线扩容、性能监测及分析功能。TDDL支持弹性扩容。 TDDL主要的优点是:

  • 数据库主备和动态切换
  • 带权重的读写分离
  • 单线程读重试
  • 集中式数据源信息管理和动态变更
  • 剥离的稳定jboss数据源
  • 支持mysql和oracle数据库
  • 基于jdbc规范,很容易扩展支持实现jdbc规范的数据源
  • 无server,client-jar形式存在,应用直连数据库
  • 读写次数,并发度流程控制,动态变更
  • 可分析的日志打印,日志流控,动态变更

开源介绍:https://github.com/alibaba/tb_tddl

05 数据复制组件-精卫

精卫填海(简称精卫)是一个基于MySQL数据库的数据复制组件,远期目标是构建一个完善可接入多种不同类型源数据的实时数据复制框架。

精卫提供如下功能:

  • 内置多种复制任务:解析MySQL的binlog到数据库(MySQL、Oracle),解析MySQL的binlog到Meta消息中间件。
  • 保证数据不丢
  • 如果有多个消费者,能够保证一个消费者挂掉或很慢,其他消费者不会受到影响。
  • 支持用户自定义复制任务:用户可以根据具体业务需求自由定制Extractor和Applier,就可以很方便地创建的新的复制任务。
  • 自定义任务灵活部署:用户自定义复制任务既可以部署在业务服务器,也可部署在精卫集群。
  • 数据过滤功能:用户通过web控制台,就可以灵活地添加、配置过滤器,虑选满足业务需求的数据。
  • 丰富的日志展现形式:用户通过web页面,不但可以查看复制任务运行时的实时数据,而且通过查看历史数据分析复制任务的运行情况,为业务分析、bug定位、监控报警提供便利。
  • 数据再散列:利用TDDL完善的分库分表规则,可以实现数据的再散列。
  • 多种途径监控、告警:用户可通过旺旺、短信、邮件的形式接受运行时告警,及时了解系统运行的监控状况,为运维提供便利。

06 数据自动迁移引擎-愚公

数据自动迁移引擎,海量数据自动运维工具,可用于对用户无影响的自动扩容和缩容,数据平滑迁移,以及异构数据源迁移,目前已经完成了214次业务迁移或扩容。

愚公架构组成: 1. 一个Jvm Container对应多个instance,每个instance对应于一张表的迁移任务

2. instance分为三部分

a. extractor (从源数据库上提取数据,可分为全量/增量实现)

b. translator (将源库上的数据按照目标库的需求进行自定义转化)

c. applier (将数据更新到目标库,可分为全量/增量/对比的实现)

yugong架构特点:

1.全量+增量任务 (减少复杂度)

2.JDBC协议 (解决环境兼容性)

3.oracle物化视图 (解决记录增量日志)

4.引入translator扩展 (解决异构数据转化)

开源项目地址:https://github.com/alibaba/yugong

07 软负载配置中心-Diamond

Diamond是一个持久配置管理中间件.可以实现分布式场景下,中心化的持久配置管理,同时也支持基于发布订阅模型配置动态变更推送。 开源介绍:http://code.taobao.org/p/diamond/wiki/index/ 项目特点:

  • 所见即所得,在管理界面上看到的所有配置即项目运行时的配置
  • 支持groupId,artifactId,version,profile四个维度以应对复杂环境
  • 支持公共组件的配置继承,client jar包配置继承
  • 配置修改实时通知客户端
  • 和spring集成,使用简单
  • 完善的权限系统
  • 集成LDAP登陆,支持同步LDAP组/用户
  • 支持http RESTful api获取配置
  • 以secret key防止非法获取配置
  • 丰富的metrics, connection统计

08 鹰眼 - EagleEye

EagleEye (鹰眼)通过收集和分析在不同的网络调用中间件上的日志埋点,可以得到同一次请求上的各个系统的调用链关系,有助于梳理应用的请求入口与服务的调用来源、依赖关系。

同时,也对分析系统调用瓶颈、估算链路容量、快速定位异常有很大帮助。另外,业务方也可以在调用链上添加自己的业务埋点,使网络调用和实际业务内容得到关联。

09 实时计算:JStorm

JStorm是Storm的Java版本,使用Java重写的同时在其基础上进行了大幅度的改进与优化.与Hadoop对大数据进行离线全量处理相对应,JStorm主要做的是对大数据的实时增量计算与流式计算。

Jstorm主要应用场景有:

1.信息流处理,如聚合、分析等

2.持续计算,如实时数据统计、监控

3.分布式rpc调用

Jstorm在内核上对storm的改进有:

1.模型简化

2.多维度资源调度

3.网络通信层改造

4.采样重构

5.worker/task内部异步化处理

6.classload、HA

开源项目地址:https://github.com/alibaba/jstorm

10 天枢 VipServer

通过集中式的配置向客户提供路由信息,以非网关的形式实现负载均衡功能;支持多种映射策略(轮询、轮询+同机房、轮询+同网段);通过健康探测机制,自动剔除不健康的机器,实现集群之间调用的透明化;对调用量、调用方等数据也有一定程度的反馈.

11 注册中心 ConfigServer

大家有Eureka使用经验的话,对ConfigServer就很好理解,它主要提供非持久配置的发布和订阅。07/08年间在淘宝内部开发使用的时候,由于ZooKeeper还没有开源,不然可能会基于ZooKeeper来进行改造。主要使用场景是为分布式服务框架提供软负载功能所必须的服务地址列表。

12 服务框架- Pandora

Pandora,中文名潘多拉,是淘宝网中间件团队打造的,基于HSF隔离技术构建的全新一代隔离容器。从解决二方包依赖冲突出发,致力于统一管理通用的二方包,包括方便的二方包升级管理,监控和管理,建立统一的二方包扩展编程方式等。

13 生产环境性能分析工具TProfiler

TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点对象,创建热点线程状态分析等数据,为查找系统性能瓶颈提供数据支持.

TProfiler在JVM启动时把时间采集程序注入到字节码中,整个过程无需修改应用源码.运行时会把数据写到日志文件,一般情况下每小时输出的日志小于50M.

业界同类开源产品都不是针对大型Web应用设计的,对性能消耗较大不能长期使用,TProfiler解决了这个问题.目前TProfiler已应用于淘宝的核心Java前端系统.

部署后低峰期对应用响应时间影响20% 高峰期对吞吐量大约有30%的降低(高峰期可以远程关闭此工具)。

开源地址:https://github.com/alibaba/TProfiler

14 本文内容小结

1,服务框架-HSF。HSF旨在为阿里巴巴的应用提供一个分布式的服务框架,HSF从分布式应用层面以及统一的发布/调用方式层面。 2,消息中间件-Notify。是一款高性能,高可靠,可无限水平扩展,支持分布式事务,支持复杂消息过滤的与互联网时代紧密结合的消息中间件。 3,消息中间件-MetaQ。是一款分布式、队列模型的消息中间件。分为Topic与Queue两种模式,Push和Pull两种方式消费。 4,数据层-TDDL。TDDL旨为用户提供在线数据库服务。TDDL部分兼容MySQL关系型数据库,并提供数据库在线扩容、性能监测及分析功能。 5,数据复制组件-精卫。是一个基于MySQL数据库的数据复制组件,远期目标是构建一个完善可接入多种不同类型源数据的实时数据复制框架。 6,数据自动迁移引擎-愚公。数据自动迁移引擎,海量数据自动运维工具,可用于对用户无影响的自动扩容和缩容,数据平滑迁移。 7,软负载配置中心-Diamond。Diamond是一个持久配置管理中间件.可以实现分布式场景下,中心化的持久配置管理,同时也支持基于发布订阅模型配置动态变更推送。 8,鹰眼 - EagleEye。通过收集和分析在不同的网络调用中间件上的日志埋点,可以得到同一次请求上的各个系统的调用链关系。 9,实时计算:JStorm。使用Java重写的同时在其基础上进行了大幅度的改进与优化.与Hadoop对大数据进行离线全量处理相对应,JStorm主要做的是对大数据的实时增量计算与流式计算。 10,天枢 VipServer。通过集中式的配置向客户提供路由信息,以非网关的形式实现负载均衡功能;支持多种映射策略(轮询、轮询+同机房、轮询+同网段)。 11,注册中心 ConfigServer。它主要提供非持久配置的发布和订阅。 12,服务框架- Pandora。基于HSF隔离技术构建的全新一代隔离容器,统一管理通用的二方包。 13,生产环境性能分析工具TProfiler。是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式。


<END>

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序架道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 08 鹰眼 - EagleEye
  • 10 天枢 VipServer
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档