漫画:大公司都在重复造轮子吗?

    一般互联网公司形成规模后,在技术上或多或少都有一些自己的基础组件。这些基础组件大体可以分为两类:

1.完全自研

2.二次开发

完全自研的一般前提是

1.这个可以有

需要使用的时候确实还不存在这个组件。比如这个领域不是一个通用领域,所需的技术也比较专业。可能存在说这个技术确实没有。

2.我需要的时候你不在

每一种技术产生都有它的历史背景。就像诸子百家,因为没有一个统一的学术体系,而时代又要求这么一个东西的时候,可能就会催生出很多技术,会同雨后春笋样的一下子同时冒出来。

举个例子:

11年初的时候,静儿在人人网,当时的Zookeeper还没有流行。当时配置管理和数据库健康检查等都是自己做的。静儿就写了一个socket程序来做这件事情。当时遇到过很多坑,静儿的服务有问题,大伙儿就都从工位上站起来了:“服务跑不起来啦~”

3.就是不一样

百家争鸣,后来绝大部分被淘汰了。但是保留下来的不仅有儒家学说,还有道家,后来还有佛家等等。他们各有特点,谁也不能代替谁。在技术上,也会存在功能大体一样,但是各有侧重或者实现方式不一样,甚至我自主研发的可能会成为下一个时代。

举个例子:

刚才说到zookeeper,zookeeper一个比较重要的应用是做服务发现,同类产品还有etcd、consul等。

zookeeper基于paxos的化简版zab,etcd基于raft算法、consul也是基于raft算法。etcd和consul作为后起之秀,并没有因为已经有了zookeeper而放弃自己,而是采用更为直接的raft算法。

二次开发是公司形成规模后使用基础组件比较常用的方式,常用的二次开发方式也有两种:

 1.深度定制

优点是可以更贴合需求的做深度改造。缺点是版本升级困难。

2.外围封装

优点是版本升级容易。缺点是个性化需求实现困难。

一般二次开发的需求场景有:

1.安全的需求

比如需要接入自己的SSO(单点登陆)系统

2.数字化运营的需求

比如公司需要对组件的稳定性、可用性做监控。对它的TPS、QPS等指标做监控和统一可视化管理。

3.个性扩展的需求

比如静儿目前在做的基于k8s的容器化,需要一些比k8s本身支持更好的隔离性、服务自动弹性收缩和打散等等。

4.兼容性的需求

需要做一些适配。

服务治理

服务治理是一个非常大的范畴。涉及的领域可以用下面界面来感知一下。    

上图来自美团点评的服务治理平台OCTO。

    服务治理有人把它的英文名字定义为SOA governance。它的产生得益于互联网架构的演变。

一体架构

    在传统的一体架构中基本没有人谈服务治理。静儿刚参加工作的时候,做过一个300人月的项目,都是放在一个工程里的。

MVC架构

    后来前后端分离,MVC架构逐渐流行,现在很多工程内部还在使用。

多应用架构

多应用架构是在领域上进行水平切分,形成相互独立的应用。比如静儿在人人网的时候,曾经一个人有段时间负责开放平台系统、SNS(Social Networking Services 社交网络服务)系统、UGC(User Generated Content 用户原创内容)系统的开发和维护。因为其他人都被投入新项目中了。

分布式架构

    这个谈的人就比较多了,包括现在的SOA、服务化、微服务,并且在此基础上衍生出来的平台化、中台化都包含着量级上的质变。

而随着服务增多,就需要一个统一的管理,服务治理也应运而生。每个公司都有自己的业务特点,所关心的指标各有侧重,目前开源的服务治理框架也往往只是其中某些点。就好像谈高可用一样,每个公司高可用侧重点不同,目前基本没有人能出来一个比较系统的高可用方案。所以这是个服务治理诸子百家的阶段。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构师进阶

高级程序员应该具备什么能力

互联网,创造了很多神话,也造就了很多传奇色彩的人物,而这些传奇色彩人物绝大多数从技术,甚至可以讲从程序员起步,所以说:科技改变未来,程序重塑人生,一点都也不为过...

702
来自专栏企鹅号快讯

信息安全不可或缺应用交付 还需安全交付

从负载均衡、应用交付到交付安全,在短短的十数年里,交付领域的变化可谓日新月异,从软件到硬件,从4层负载到7层应用,而这两年,主流厂商又将应用交付的大旗指向了信息...

1879
来自专栏安恒信息

【连载】2016年中国网络空间安全年报(九)

2016年中国网络空间安全年报 6. 数据泄露专题分析 2016年数据泄露愈演愈烈,全球相继曝光了大量的数据泄露事件,数据泄露事件频率呈现爆发式增长,而曝光...

3118
来自专栏云计算D1net

云存储基础设施的决定:公共云与私有云

许多IT专业人士认为,私有云存储只是其当前基础设施的另一个名称,公共云存储也是同样如此,而只是在某公司的公共数据中心实施。那些存在这些想法的供应商通常缺乏云存储...

3074
来自专栏云计算D1net

展望2015:提高云计算效率的10个途径

不管你信不信,我们正处于云计算领域一个非常关键的节点。尽管增长已趋于稳定,但是注定我们将会迎来一个繁荣的景象。根据最近的Cisco Global Cloud I...

2899
来自专栏PPV课数据科学社区

C++改变了世界,未来还要助力人工智能、大数据、机器学习的研发

? 编者按:尽管C++在大数据时代显得不温不火,既不像他的小师弟Java那么应用广泛,又不如后起之秀Python便捷,但在性能和效率方面仍然保持优势,不少桌面...

3356
来自专栏非著名程序员

夹缝中生存的个人开发者

? 个人开发者在5年前不是一般的吃香,即使是在三年前也能如鱼得水,可是如果一个移动开发者现在自己要当一个个人开发者,那你就是在夹缝中生存。为什么?答案只有一个...

1918
来自专栏安恒信息

“黑手阅读”潜伏后台大肆掠夺,手机信息安全岌岌可危

近日,手机信息安全侦测中心发现一款名为“黑手阅读”手机恶意软件, 该恶意软件伪装成“百部经典小说下载阅读”,一经安装后即会长期寄居在用户手机后台...

26310
来自专栏SDNLAB

DevOps部门正转向公有云

因获取IT基础设施来进行应用试验,DevOps 部门和IT部门的冲突正越来越大。开发者们不再等待内部IT部门为应用程序开发提供IT基础架构,而是开始通过公共云服...

3709
来自专栏云计算D1net

DevOps部门正转向公有云

因获取IT基础设施来进行应用试验,DevOps 部门和IT部门的冲突正越来越大。开发者们不再等待内部IT部门为应用程序开发提供IT基础架构,而是开始通过公共云服...

2576

扫码关注云+社区