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

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

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 条评论
登录 后参与评论

相关文章

来自专栏罗超频道

今天凌晨这个小动作,让微信完成复制中国互联网的最后一步

6月6日凌晨,苹果WWDC 2017年召开让许多人忽视了微信的一个重量级更新:微信公众账号图文消息正式允许插入第三方内容。微信内容运营者在编辑图文消息时,可以插...

3155
来自专栏Java架构

Java程序员月薪达到三万,需要技术水平达到什么程度?

最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到三万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许...

1472
来自专栏Java架构

Java程序员月薪达到三万,需要技术水平达到什么程度?

1919
来自专栏BestSDK

AnySDK可实现原生、H5、VR、三大平台快速接入

AnySDK拥有“全渠道接入,快人一步”的特点,其免费版提供超过200家渠道接入,企业版提供国内全渠道接入,在发行联运方面能够提高单款产品10%的收入。仅201...

2549
来自专栏编程

手持 Python 利剑,一路向前

学习 Python 课程究竟有什么用?Python 课程学员假牙运用课程所学,在工作中设置自动化检验脚本,为团队排除 bug 规避风险。「最难受的时候再坚持一下...

19610
来自专栏AI星球

一群学生是怎么开发软件项目的

伸伸懒腰,决定总结一下自己2016年参与开发的一个软件项目。通过软件开发的工作,除了锻炼我们的编程能力、团队意识,额,还可以提高....增加老师的收入!哈哈,言...

3002
来自专栏逻辑熊猫带你玩Python

“推荐给新手的几个编程酷站,最后一个最骚包!”

gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

1673
来自专栏极限编程

简单设计落地三板斧

如果你认同 简单设计的价值观,我相信 解析简单设计原则 对你来说很容易理解并接受,它不像面向对象设计原则(比如:SOLID)那么晦涩难懂,它给你指明了一条明朗...

881
来自专栏程序你好

新手程序员如何写出好的代码

我之前的博客文章在推特上火了。这篇文章指出了一个问题——始终遵守某些规则实际上并不能帮助人们更好地编写代码。

995
来自专栏数据和云

恩墨有约上海站之小团圆

这次上海的两日,倍觉凄风冷雨之寒,还好有咖啡、新朋,聚而论道,谈一谈大家的技术之旅。 流水账记录一下大家闲聊的话题。 在Oracle和DB2之间的选择,在Ora...

3415

扫码关注云+社区