首先,请相信我:这是一篇技术文章,正不正经,那就只有看完才能知道了!

前几天,一则“前沿数控因使用腾讯云而数据全部丢失”的新闻震惊了整个IT圈。当我看到这新闻的时候,突然的想法是这样的:

不过在我们这个业务为王的特殊环境下确实也不是大新闻。过几天,换个话题就都过去了。但是作为一个技术人,必须要振臂高呼一句:基础建设要自主。

所以这次借了 SACC2018 的东风,推出了关于基础建设的深度培训课程:《构建与使用快速响应的分布式中间件平台实践》

整个课程从头至尾讲述了怎么样快速并且低成本的构建一个属于自己的中间件平台,从方案的整体架构设计开始,到开发的难点分析,再到真实环境的具体实施过程,以及使用一段时候后对于初版的改进升级等,一应俱全,应有尽有。

整个计划主要分为三个部分:

▍1. 以业务开发为核心驱动的技术栈中间件设计与实现。

这部分主要以Java语言开发为主,主要讲述以Java语言为主开发的技术栈Albianj与任务调度系统Scher与Jinwei系统。

Albianj是一个类似于spring+hbm的高性能扩展版。类比spring与hbm,IOC、DI响应的做了简单化处理,但是增强了对于数据库分库分表的数据路由功能、分布式事务的控制功能等一序列面对海量数据与互联网快速开发要求的实现。

整个albianj不仅仅只有spring与hbm的功能,它更是我们业务开发的核心,整个架构图如下图:

Scher与Jinwei是我们任务调度的两个不同类型的区分。他们分别完成定时和实时任务的调度。

它们基于Albianj实现,有着相同的物理与逻辑架构,并且有着90%重叠的功能,但是我们却在设计、开发与部署的时候进行了强制性的隔离,这里的原因痛苦而无奈,想知道为什么吗?来,我告诉你。

▍ 2. 高性能开发为主的中间件设计与实现。

这部分主要由linux下的C开发为主,主要讲述我们自我实现的分布式id生成器Chaos,分布式文件系统DFS、分布式缓存系统lest与分布式协调器lax,通讯协议hms与使用JNI实现的http服务Aru。

分布式id生成器Chaos主要为我们的业务生成全站唯一的、可视化、区间内单调递增的id,用于取代老旧的MySQL自增id或者是uuid作为主键的方案。

Chaos生成的id和albianj的数据路由进行紧密的配合,可以使开发者在无感知、无侵入的情况下快速而有效的开发出可以抵挡亿级PV的分布式业务系统。

DFS就不用多说了,这是一个互联网公司走向中间件自主的必经之路,也是标志之一。因为我们业务的特殊性,要求对于DFS存储的内容可进行频繁的更改,所以市面上其实并无相应的成熟DFS可用,故我们别无选择。

我们在DFS上花了很大的时间进行设计和优化,使其满足我们每天亿级新增/更改的需求。

有了DFS的内容存储,我们又对其增加了一个出口:这就是我们的Arch系统。说起Arch系统,这仅仅是出于我们自己的看不惯和“2”的精神。因为觉得netty太过复杂,所以就动了自己写一个精简NIO的恻隐之心,所以就在“好玩”的驱使下,我们使用JNI自己封装了一个C版本的NIO,然后因为想试试它的完备性、健壮性和性能,思来想去http最简单,那就搞一个小心的http服务器吧。所以arch由此诞生。

目前arch运行在我们的图片、音频等项目中,为漫画、精排、封面提供每天亿级访问的服务。

对于图片、音频等当然是主要输出就可以了。但是对于内容就没有那么简单了,所以我们在DFS上又增加了一套基于大数据和AI的关键字鉴别与分析系统,这样将DFS完整的平台化。

分布式缓存系统lest和分布式协调器lax则不同,他们的出现来自于我们对于缓存管理的无奈和懊恼,还有对于zookeeper的失望。

以前我们的缓存使用了26台的redis来进行管理,机器数量增加的同时也增加了成本,并且redis客户端的分布式模式时间长了真的很难管理。所以我们开发了lest,一个不需要大内存而基于ssd的缓存系统。

为了给lest增加严格的版本控制,实验了zookeeper,不管是部署还是性能,都不满足我们的需求和胃口,再者zk的功能太多了,我们又及其讨厌开源软件的“复杂税”,所以在迫于无奈的情况下,我们只能自己开发了分布式协调器lax。从而将lest和lax组合成一个完整的系统。

又因为lest和lax的存储与通讯的需要,在研究了google的pb等所谓的通讯协议后,还是不太满意这些开源的通讯协议不要中间协议文件与编译的步骤,所以在此基础上我们构建了hms通讯与存续协议。

并且是hms不仅仅满足存储与通讯协议的需求,我们更是将hms的对象作为一个对象树,还集成了简单的查询方法,可以提供简单的大于,小于,等于等等查询。

▍ 3. 最后一部分

我们将讨论一点哲学问题:人、团队、架构、业务代码之间的4角关系。

说了那么多,其实我就是想表达一个观点:完全自主化中间件并不难。我们一个团队花了没多少时间就开发了那么多的东西,虽然中间也碰到了各种的问题,好在最后都顺利的解决了。

还是印证了那句话:

每天的业务开发是不是让你已经厌倦了整天加班的痛苦?

所以,你准备好了吗?中间件开发这门艺术几乎就要失传了,你还不赶快来参加我们?

最后,请相信我,这是一篇技术文章!

细心的朋友们已经又在问了,参会的渠道在哪里呢?往这儿看

对了,SACC2018大会门票 7.8 折优惠今天已经是最后一天了!!还犹豫什么呢?点击了解更多就是了。

快上车!“正经”文章告诉你如何构建与使用分布式中间件平台实践相关推荐

  1. k8s crd构建方法_告诉您正在构建没人想要的东西的8种方法(以及处理方法)

    k8s crd构建方法 by Geoffrey Bourne 杰弗里·伯恩(Geoffrey Bourne) 告诉您正在构建没人想要的东西的8种方法(以及处理方法) (8 ways to tell y ...

  2. 华为云电脑.模式_今晚0元学华为云计算HCIA课程!快上车,提前了解云计算三种服务模式...

    点上方蓝字关注,每天都有新收获! 学网络,就在IE-LAB 国内高端网络工程师培养基地 今晚0元学华为云计算HCIA课程! 快上车啦 今晚7:30--9:30 扫码火速报名 云计算是一种全新的商业模式 ...

  3. 易基因 | 微量样本DNA甲基化测序分析怎么做?25.617分文章告诉你

    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因. 想知道微量细胞样本的DNA甲基化测序分析怎么做吗?这篇25.617分的文章告诉你! 微量细胞样本Micro DNA-BS绘制猕猴植入前胚 ...

  4. 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具

    前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...

  5. 2018计算机专硕学硕,2018考生快上车!专硕VS学硕,究竟怎么选?

    原标题:2018考生快上车!专硕VS学硕,究竟怎么选? 有小伙伴说,我是2018考研生,我有好多问题要问啊.亲爱的,慢慢来,从今天开始,小编将用一年的时间陪伴你. 今天,咱们就来讲讲学硕和专硕的区别. ...

  6. 上台演讲怎么做?这篇文章告诉你

    上台演讲怎么做?这篇文章告诉你 公众号:"王堃阳口才前线"始于2003年,学演说找王堃阳,专治各种不会说! 演讲者很可能是突然被"点将",而没有做好思想准备.心 ...

  7. lasso特征选择python_特征选择怎么做?这篇文章告诉你

    原标题:特征选择怎么做?这篇文章告诉你 照片由 Clem Onojeghuo 发布在 Unsplash 上面 作者 | Pier Paolo Ippolito 翻译 | Skura 编辑 | 唐里 原 ...

  8. 快看漫画如何构建好的用户画像平台?

    1. 画像平台产品架构 上图是基于快看数据中台画像平台产品的理解和定位整理出来的产品架构.画像平台首先是服务于业务的,运营可以基于画像平台对单个用户或者人群包做画像的洞察,平台服务的业务应用层包含: ...

  9. 这篇文章告诉你表格识别的软件有哪些

    这篇文章告诉你表格识别的软件有哪些 大家在学习和工作过程中,会时常遇到需要整理表格信息的时候,有时需要处理的表格非常的多,但我们自己的时间又比较有限.其实我们可以使用能够识别表格的软件来帮助我们进行快 ...

最新文章

  1. 用于 Outlook 2003 的删除重复邮件的插件(加载项)
  2. 媒体转码升级为媒体处理
  3. SQL错误提示档案(3):SQL Server连接中的四个最常见错误
  4. JDK 11的一般可用性
  5. java i o总结_Java I/O 总结
  6. c语言结果输出10遍,C语言 如何实现输出这样一系列输出结果
  7. 《SOA In the real world》第一章译稿(含下载)
  8. LeetCode 240. Search a 2D Matrix II
  9. WPF布局控件之StackPanel布局
  10. (Note)欧空局多光谱卫星Sentinel-2
  11. ❤️❤️新生代农民工熬夜整理Python入门教程,包教包会!附源码❤️❤️
  12. 1000: 从今天开始入坑C语言
  13. 瑞盟MS2358 96KHz、24bit音频ADC芯片--DFN12 封装
  14. [小o地图-数据] - 城市交通态势数据(实时路况)
  15. 第八篇order订单专题(2)订单通知及属性
  16. Java封装的四个关键字
  17. Ubuntu好用的视频播放器
  18. 用超级计算机打游戏是什么样的体验,[Quora] 在超级计算机上玩游戏是一种怎样的体验?...
  19. RT-Thread ART-Pi 外部SPI Flash分区挂载为U盘
  20. 【django】Windows下安装Redis

热门文章

  1. 《2020城市大脑全球标准研究报告》全文正式开放申领
  2. 智慧城市建设必须认真对待的几个问题(一):IPV6作为地址的问题
  3. 4个重要的量子理论实验综述
  4. 人工智能正在推动芯片的复兴
  5. 中国数学相比与西方数学为什么会处于劣势?
  6. 【周末阅读】你不得不知道的10大AI赋能行业,你身边都能找到!
  7. 重磅:苹果高通和解!英特尔退出5G基带市场,高通股价暴涨超20%,华为依然淡定...
  8. 人工智能军备竞赛:一文尽览全球主要国家AI战略
  9. 谷歌放出AI平民化大招: 李飞飞宣布推出AutoML云平台,让普通企业也能用上深度学习
  10. 平均 14926 元!2021 年 5 月程序员工资统计出炉