写点什么

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

评论 1 条评论

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

前端代码规范 - 日志打印规范

南城FE

JavaScript 前端开发 代码规范

Linux虚拟网络设备全景解析:定义、工作模式与实践应用

GousterCloud

Linux Kenel 设备

虚拟网络设备的真正使命:实现有控制的通信

GousterCloud

Linux Kenel

虚拟网络设备与网络安全:深入分析与实践应用

GousterCloud

Linux Kenel 虚拟网卡

虚拟网络设备性能优化

GousterCloud

Linux Kenel 虚拟网卡

心态崩了,约了半个月,就只有3个面试!

王中阳Go

微服务 并发编程 面试题 面经 大厂面经

Ascend C 自定义算子 Kernel Launch调用入门

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号2024年4月PK榜 自定义算子开发

信息泄露漏洞的JS整改方案

常用Java代码混淆工具介绍及比较

雪奈椰子

掌握Linux虚拟网络设备:从基础到应用的全面指南

GousterCloud

Linux Kenel 网络设备

嵌入式会越来越卷吗?

芯动大师

嵌入式 嵌入式软件 嵌入式应用

Kafka 线程模型痛点攻克: 提升分区写入 2 倍性能

AutoMQ

Apache 云计算 大数据 kafka

Linux虚拟网络设备:底层原理与性能优化深度解析

GousterCloud

Linux Kenel 设备驱动

随易周刊第002期 - 四象

前端之虎陈随易

程序员 前端 Web 周刊 技术周刊

MySQL 主从 AUTO_INCREMENT 不一致问题分析

快乐非自愿限量之名

MySQL 数据库

沙丘世界,如何抵抗勒索病毒的入侵?

白洞计划

网络安全

虚拟网络设备与Linux网络协议栈

GousterCloud

Linux Kenel

避免IT项目延误的终极指南:揭秘10大原因及解决方案

爱吃小舅的鱼

项目管理 项目经理 IT项目管理

体育赛事直播系统源码,用于搭建平台的价值与优势

软件开发-梦幻运营部

一键生成视频!用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流

阿里云大数据AI技术

人工智能 阿里云 AI视频

用three.js做一个3D汉诺塔游戏(下)

OpenTiny社区

前端 three.js

LangChain Agent:赋予 LLM 行动力的神秘力量

蛋先生DX

#人工智能 LLM #LangChain AI Agent 企业号2024年4月PK榜

XML文档节点导航与选择指南

小万哥

xml 程序人生 编程语言 软件工程 前端开发

微服务架构下,如何通过弱依赖原则保障系统高可用?

京东零售技术

Java 架构 后端 企业号 4 月 PK 榜

文心一言 VS 讯飞星火 VS chatgpt (232)-- 算法导论17.1 3题

福大大架构师每日一题

福大大架构师每日一题

虚拟网络设备的网络隔离机制:原理、意义与应用场景深度分析

GousterCloud

Linux Kenel 网卡

打造银行核心全栈国产化新模式,第三届数字金融技术创新与应用研讨会成功举办

先锋IT

高维解码|Redis 收紧许可证!开源软件公司如何在云时代生存?

Zilliz

redis 开源 许可证 Zilliz 开源公司

云手机提供私域流量变现方案

Ogcloud

私域运营 私域流量运营 云手机 海外云手机 跨境云手机

解密组合监控:优化系统性能的关键策略

观测云

监控

Linux虚拟网络设备深度解析:使用场景、分类与开发者指南

GousterCloud

Linux Kenel 虚拟网卡

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