NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

唯品会自研微服务框架 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:0910453

评论 1 条评论

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

鉴释人物丨专访首席技术官陈新中:三十年磨一“鉴”, 打造静态代码分析行业标杆

鉴释

编译器 静态代码分析

成为Linux大佬的学习之路-规划

学神来啦

Linux 运维 linux运维 linux学习

揭秘百度微服务监控:百度游戏服务监控的演进

百度开发者中心

云计算 微服务 最佳实践 方法论 云原生

架构实战训练营模块三课后作业

Clarke

六种主要服务器管理协议简单概述-行云管家

行云管家

行云管家 服务器协议 服务器管理

2021全国人工智能师资培训走进北理工,百度飞桨助力高校教师提升AI能力

百度大脑

人工智能 高校

直播回顾丨鉴释首席架构师刘新铭为您解读“第一性原则”

鉴释

软件开发 代码质量 软件质量与安全

如何使用 Kind 快速创建 K8s 集群?

尔达Erda

开源 云原生 k8s PaaS kind

BoCloud博云:ESB老旧力不能支,微服务独立自治强势替代

BoCloud博云

微服务

性能测试误差对比研究(一)

FunTester

性能测试 接口测试 测试框架 误差分析

RTC月度小报5月丨教育aPaaS灵动课堂升级、抢先体验VUE版 Agora Web SDK、声网Agora与HTC达成合作

声网

月度小报 行业深度

我们三岁啦!

鉴释

百度前端三面面试题全部公开,三面的最后一个问题令我窒息

前端依依

百度 面试 大前端 经验总结

工程师文化落地的几点思考

baiyutang

敏捷 敏捷开发 精益开发 精益思想 敏捷管理

性能测试误差对比研究(三)

FunTester

性能测试 接口测试 测试框架 误差分析

fil价格今日行情?2021年fil币预估价格多少钱一枚?

区块链 分布式存储 IPFS fil价格 fil预测

鉴释×中科院计算所丨OS2ATC 2020精彩回顾

鉴释

开源 操作系统

鉴释人物丨专访首席科学家李隆: 重一步业务逻辑验证,省百步漏洞补缺

鉴释

业务逻辑 漏洞修复

性能测试误差对比研究(四)

FunTester

性能测试 接口测试 测试框架 测试开发 误差分析

认识容器,我们从它的历史开始聊起

华为云开发者联盟

Docker Kubernetes 容器 进程

围观|解读新一代企业数字化架构的“三驾马车”

尔达Erda

开源 DevOps 云原生 数字化转型 数字化

VSCode 断点调试 electron-vue 主进程

admin

Vue 调试 Electron

我们该如何应对日益增长的安全债务风险?

鉴释

应用安全 代码安全

论工作几年深陷业务代码的程序员如何实现自我提升

北游学Java

Java 程序人生

第八周作业——知识星球内容管理功能

小夏

产品经理训练营 邱岳

图灵奖得主Judea Pearl谈机器学习:不能只靠数据

百度开发者中心

机器学习 最佳实践 方法论 文化 & 方法 其他

51CTO专访|鉴释首席架构师刘新铭:让软件开发更安全、更高效

鉴释

编译器

鉴释课堂丨编译器技术入门知识一网打尽

鉴释

编译器 编译器原理

性能测试误差对比研究(二)

FunTester

性能测试 压测 接口测试 测试框架 误差分析

创业邦专访丨兼容国内外市场的代码分析软件,鉴释科技帮助企业减少bug发生率

鉴释

创业公司

【报名】百度EasyDL研讨会:揭秘智能化硬件AI应用的技术难点与行业落地

百度大脑

人工智能 智能化

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