通常互联网公司造成规模后,在技术上或多或少都有一些本身的基础组件。这些基础组件大致能够分为两类:算法
1.彻底自研数据库
2.二次开发后端
彻底自研的通常前提是安全
1.这个能够有网络
须要使用的时候确实还不存在这个组件。好比这个领域不是一个通用领域,所需的技术也比较专业。可能存在说这个技术确实没有。架构
2.我须要的时候你不在框架
每一种技术产生都有它的历史背景。就像诸子百家,由于没有一个统一的学术体系,而时代又要求这么一个东西的时候,可能就会催生出不少技术,会同雨后春笋样的一会儿同时冒出来。前后端分离
举个例子:socket
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、服务化、微服务,而且在此基础上衍生出来的平台化、中台化都包含着量级上的质变。
而随着服务增多,就须要一个统一的管理,服务治理也应运而生。每一个公司都有本身的业务特色,所关心的指标各有侧重,目前开源的服务治理框架也每每只是其中某些点。就好像谈高可用同样,每一个公司高可用侧重点不一样,目前基本没有人能出来一个比较系统的高可用方案。因此这是个服务治理诸子百家的阶段。
关注静儿公众号,不按期漫画技术推送~