写点什么

唯品会自研微服务框架 OSP,解决拆分、扩容难题

  • 2019-06-04
  • 本文字数:2431 字

    阅读完需:约 8 分钟

唯品会自研微服务框架OSP,解决拆分、扩容难题

马尔文·康威 1967 年提出康威定律:“设计系统的架构受制于产生这些设计的组织的沟通结构。”


根据康威定律,当互联网公司业务和团队发展到一定规模,微服务架构是一种必然的演化趋势。近几年,随着电商业务的快速发展,唯品会逐渐实施了微服务架构,面对如此大规模的电商业务,如何进行微服务框架体系的建设;面对电商大促,如何快速大规模扩容;面对如此复杂的电商业务,如何更好的拆分微服务,都是要解决的一系列难题。


7 月 14 日,唯品会业务架构架构师杨钦民老师将在 ArchSummit 全球架构师峰会分享唯品会微服务基础中台和最佳实践的演讲,我们提前邀请杨老师对分享内容进行预热解读,希望对你/团队有帮助。

唯品会微服务基础中台架构设计思路

围绕微服务,唯品会自主研发了微服务框架以及一系列配套的系统:


  • OSP(开放服务平台)微服务框架,提供高性能、高可扩展的远程调用机制,实现了契约化多语言服务接口,同时提供了强大的服务化治理能力,可以实现负载均衡、路由选择以及自我保护等。

  • Service Center 统一的服务治理中心,对基础服务化项目提供的服务进行治理,将所有服务化项目的配置集中在一起,实现一处配置、多处运行的目标。

  • Mercury 全链路跟踪监控平台,实现了全链路调用链跟踪、指标统计、监控告警等,通过 Mercury,应用管理人员/架构师等可以全方位把握应用整体拓扑结构、定位全网应用瓶颈。应用开发人员可以定位线上服务性能瓶颈、持续优化代码和 SQL、帮助快速解决线上问题,IT 运维/监控人员可以快速故障告警和进行问题定位、把握应用性能和容联评估、提供可追溯的性能数据。

  • Janus 服务网关,为业务服务提供统一对外的、高性能的 HTTP 网关,针对外网支持 HTTPS、HTTP2、HTTP、自定义协议等,针对内网可以自动适配到 OSP 协议。

  • Salus 服务安全管理平台,面向 OSP 和 RESTful 形式的服务,提供服务安全管理(认证、鉴权、防篡改)的手段。

  • 基础中间件,CfgCenter 应用配置中心实现应用配置管理,Saturn 分布式任务调度平台具备高可用以及分片并发处理能力等,Asgard 一站式存储服务平台可以实现统一管理、统一监控存储服务,VMS 消息系统具备组内广播、消息回溯、消息延时、灰度消息等。

唯品会开发微服务框架 OSP,和 Service Mesh 有哪些异同?

唯品会在设计 OSP 微服务框架之初,就已经单独抽出了代理层 Proxy,类似 Service Mesh 的 Sidecar。客户端与微服务框架代理层 Proxy 部署在同一机器的不同进程,各自独立部署,服务治理逻辑从客户端业务逻辑中解耦出来。


和 Service Mesh 相比,OSP 所具备的优势包括:


  • 加强运维管理,运维人员可以单独针对 Proxy 进行独立升级、维护,极大加强运维管理能力。

  • 框架可以持续演进,Proxy 作为一个独立的代理层,与服务隔离,并且独立部署和运维,每次框架发布新版本时,无需业务研发部门介入,运维就能独立进行升级和部署,因此服务框架可以持续进行演进。

  • 支持多语言,Proxy 采用自己的开发语言进行开发,独立演进,而每个服务均可以采用合适的开发语言,二者互不影响。


唯品会拆分微服务过程中遇到的难题

在拆分复杂电商业务系统的过程中,遇到的难题包括:


  • 如何按照组织架构划分以及搭建比较清晰的系统架构,如同康威定律所说:组织架构等同于系统架构,一个好的系统架构需要匹配组织架构,同时组织架构在很大程度上会影响系统架构的走向。

  • 如何界定服务边界,将复杂电商业务拆分成不同的服务时,首先面临的是如何可以清晰的界定不同服务的边界,减少服务间的耦合,其次面临的是服务拆分的粒度,粒度过粗可能会造成服务间的耦合,粒度过细可能会拆分出过多的服务。

  • 如何进行服务聚合,服务拆分之后,当面临复杂业务时,需要考虑多个服务的聚合,是由一个团队进行聚合分别提供各方,还是由各业务方分别聚合。

在微服务框架体系建设实践中,选择开源还是自研?

在建设微服务框架体系建设过程中,针对不同业务体量、不同技术储备的公司,我们需要思考以下几个关键点:


  • 是选择开源微服务框架,还是选择自研微服务框架?如果一些大公司业务体量非常大,技术储备非常多,发展到一定的阶段,可以根据公司自身情况,考虑自研发微服务框架体系。而中小型初创公司,由于业务体量不是很大,同时技术储备也比较少,技术人员的技术实力也不够深厚,建议选择各种开源微服务框架,构建自己公司的微服务框架体系。

  • 是否选择自构建 Kubernetes 集群。同样,对于有自建服务器机房且业务体量庞大的公司,选择自建 Kubernetes 集群是再好不过了。而针对中小型初创公司,建议选择云服务商,可以更快构建 Kubernetes 集群。


  • 是否选择 Service Mesh 框架。Service Mesh 是近两年的热点,是否选择跟风演进到 Service Mesh 框架,也是一个考量。大公司甚至大集团,业务线非常多,技术体系也比较丰富,一般会有多种开发语言并存,同时大公司的技术实力也非常雄厚,此时建议演进到 Service Mesh 框架,国内已经有多家有实力的大公司在积极自研发 Service Mesh 框架。而针对中小公司、初创公司,需要根据自身客观情况考虑,一般都是只有一种开发语言,所以针对此种情况,建议可以选择 Spring Cloud 框架、Dubbo 框架等。

2019 年 Kubernetes 在应用开发和运维上有非常重要的能力透出,在唯品会有哪些深入应用?

唯品会基于 Kubernetes+Docker 技术框架研发了 Noah 云平台,涵盖应用的开发、交付、运维和运营全生命周期,整个平台包括主机层、容器层、云平台层、镜像管理、CI/CD,支持灰度分批发布、容器 Auto Scaling、集群节点管理、多集群时间监控等。


  • 开发阶段提供 CI 镜像流水线,本地开发 DockerVM,功能测试环境、联调测试环境给开发和 QA 完成镜像的发布;

  • 生产阶段提供容器发布、容器调度、容器服务注册发现、容器网络互通、集群管理等功能完成运维工作;

  • 提供容器的运行时日志、监控、告警等功能做业务监控。


除此之外,杨钦民老师将于 7 月 14 日在深圳大中华喜来登酒店分享半天的微服务架构培训,分享电商平台微服务架构演进实战,帮助听众了解大规模容器云实施实践,以及微服务框架体系建设经验。


2019-06-04 12:0911028

评论 1 条评论

发布
用户头像
推荐低代码服务编排库 Commander
https://xie.infoq.cn/article/1adf7327403affd58aadb67a4
2022-03-26 00:16
回复
没有更多了
发现更多内容

5大法则助你 成为更出色的开发者

三钻

学习 编程 程序员 敏捷开发 经验分享

【第十周作业】

Aldaron

SpringCloud服务注册与发现(Eureka)

xcbeyond

Java SpringCloud Eureka 服务注册与发现

区块链技术在银行业的运用

CECBC

区块链 信息安全 金融

更优雅的编写JavaScript

三钻

Java 程序员 大前端 经验分享 ES6

你真的懂怎么写`服务层`吗?

三钻

php 程序员 后端 服务 架构思维

VSCode常用快捷键大全|VSCode高级玩家宝典之第一篇

三钻

学习 程序员 效率工具 vscode 快捷键

【数据结构与算法】如何高效学习数据结构与算法

三钻

学习 数据结构与算法

带你体验Vue2和Vue3开发组件有什么区别

三钻

Java Vue 大前端 Vue3 React

浅析Python3列表操作之*和*=

wangkx

Python Python基础

国内外低/零代码的有哪些代表?

代码制造者

编程语言 低代码 零代码 信息化 开发应用

6个高效学习编程的方法

三钻

学习 程序人生 大前端 后端

DSN 主流项目调研 0——IPFS&&Filecoin白皮书总结

AIbot

区块链 分布式存储 分布式文件存储 IPFS Filecoin

用“易于改编”原则,提升编程水平,写出更好的代码

三钻

程序员 大前端 后端 经验分享 编程风格

图解JavaScript——代码实现(六种异步方案,重点是Promise、Async、发布/订阅原理实现,真香)

执鸢者

原理 异步 Promise Async

docker-compose构建springcloud微服务项目

xcbeyond

Java Docker Docker-compose springboot

憋再PS抠图了,3行代码给你安排的明明白白!

wangkx

生产力 图像识别

VSCode插件大全|VSCode高级玩家之第二篇

三钻

程序员 vscode 编辑器 插件 技巧

VSCode配置同步|VSCode高级玩家宝典之第三篇

三钻

程序员 效率工具 vscode 开发工具

DSN主流项目调研1——Storj和Arweave的简介

AIbot

分布式存储 区块链+ 分布式文件存储 Storj Arweave

写给想学和在学编程的你们,学习编程的7个好处

三钻

学习 程序员 软件开发 编程之路 经验分享

前端必看的8个HTML+CSS技巧

三钻

Java html html5 css3 大前端

Git分支管理策略及简单操作

wangkx

git git flow

【FCC前端教程】28关学会HTML与HTML5基础

三钻

CSS html 大前端

【FCC前端教程】44关学习CSS与CSS3基础「一」

三钻

CSS css3 程序员 大前端

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

xcbeyond

Java Docker idea插件

CentOS7 下Docker安装、启动

xcbeyond

Docker 软件安装

【第十周】学习笔记

Aldaron

解读CDN的应用场景与产品价值

阿里云Edge Plus

CDN

职业发展的迷茫与困境:你真的了解晋升机制吗?

伴鱼技术团队

职业规划 技术管理 技术交流 职业成长 技术人生

Lambda架构已死,去ETL化的IOTA才是未来

易观大数据

唯品会自研微服务框架OSP,解决拆分、扩容难题_语言 & 开发_杨钦民_InfoQ精选文章