Online Boutique 完整拆解:11 个微服务如何撑起一个云原生电商 Demo
2026/9/6 16:10:50 网站建设 项目流程

Online Boutique 完整拆解:11 个微服务如何撑起一个云原生电商 Demo

【免费下载链接】microservices-demoSample cloud-first application with 10 microservices showcasing Kubernetes, Istio, and gRPC.项目地址: https://gitcode.com/GitHub_Trending/mi/microservices-demo

想搭一套能演示"浏览、加购、下单"完整流程的微服务电商 Demo,但又不想从零写一堆服务?还希望它真实一点:服务之间真的跨语言、跨进程调用,购物车真的落在 Redis 里,而不是一个 mock 出来的单体应用?这就是 Online Boutique 存在的原因。

它是什么:Google Cloud 出品的微服务样板间

Online Boutique 是 Google Cloud Platform 官方维护的一个 cloud-first 电商演示应用:用户在网页上浏览商品、加入购物车、完成支付,背后由 11 个用不同语言编写的微服务协作完成。它最大的卖点在于"真实且开放"——所有服务围绕 gRPC 和 Protocol Buffers 通信,不依赖任何特定云,任何 Kubernetes 集群(GKE、Minikube、Kind 都行)都能跑起来。

架构拆解:11 个服务,一次下单数据怎么走

把整个系统想象成一家百货商场,每个服务都有自己的角色分工:

  • frontend是门店接待员:唯一对浏览器开 HTTP 端口的服务,自动为访客生成会话 ID,其他页面元素都靠它从后场"调货"。
  • productcatalogservice是货架:商品数据来自products.json,支持列表、搜索和单品查询,最轻量的服务之一。
  • cartservice是购物车柜台:读写都走 Redis,用户加购了什么、结账前购物车还剩什么,都由它管。
  • checkoutservice是收银台主管:下单时它先取购物车,再串联支付、运费估算和邮件通知,是整条链的编排者。
  • paymentserviceshippingserviceemailservice分别扮演(模拟)收银员、快递站和客服:扣款、估价发货、发确认邮件,全是 mock 但接口是真实的。
  • currencyservice是汇率窗口:对接欧洲央行真实汇率做币种换算,也是全系统 QPS 最高的服务。
  • adservicerecommendationservice是门口的广告牌和导购:前者按关键词给文字广告,后者根据购物车内容推荐其他商品。
  • loadgenerator则是一群"虚拟顾客":用 Locust 持续发起真实的购物请求,让你随时能看到流量下的服务表现。

数据流向一目了然:loadgenerator打到frontendfrontend再扇出调用目录、购物车、广告、推荐等服务;一旦下单,frontend转交checkout,由它回调支付、物流、邮件和汇率服务,购物车状态则始终落在 Redis 上。想看完整拓扑,看上面的架构图即可。

技术栈速览:为什么故意用这么多语言

语言服务搭配理由
Gofrontend / productcatalog / checkout / shipping高并发场景的首选,前端与编排服务都压得住
C#cartservice演示 .NET 在容器环境下的完整落地,还内置了 Redis/Spanner/AlloyDB 多存储实现
Node.jspayment / currency轻量无状态服务,起步成本最低
Pythonemail / recommendation / loadgenerator胶水型、任务型逻辑,写起来最快
Javaadservice证明 JVM 服务与其余服务同样能无缝融入 gRPC 生态

这种"语言混搭"不是炫技,而是刻意的教学点:微服务落地的真实世界里,团队必然是异构的,gRPC + Protocol Buffers(定义集中在 protos/ 目录)就是让 5 种语言互相通话的契约。

上手路径:从 clone 到访问首页 3 步走

前置条件很简单:kubectl,外加一条 Kubernetes 集群(GKE 或本地 Minikube / Kind 均可)。

  1. 克隆仓库:git clone https://gitcode.com/GitHub_Trending/mi/microservices-demo
  2. 选部署路径:
    • 最快路线(GKE):仓库里的release/kubernetes-manifests.yaml已把所有服务打包好,一条kubectl apply -f ./release/kubernetes-manifests.yaml即可;
    • 本地开发路线:装好 skaffold,在 Minikube 或 Kind 上执行skaffold run,它会一次性构建并推送 11 个服务的镜像;
    • 变体路线:Istio 服务网格、网络策略、Cloud Spanner、Memorystore 等可选模块都在 kustomize/components/ 下,按需叠加。
  3. kubectl get pods看到全部Running后,从frontend-externalservice 拿外部 IP 用浏览器访问,一个能逛能买的店面就开张了。

能学到什么:这份代码库的含金量

  • 你能读懂一次完整下单的全部环节:从frontend发起,到checkout编排支付、物流、邮件,跟着调用链走一遍,比看十篇理论文章直观。
  • 你能掌握 gRPC 的落地方式genproto.sh展示各语言如何从同一份.proto生成桩代码,改一个接口定义、看它如何影响所有客户端。
  • 你能学会用 Kustomize 组装部署:基础清单放在 kustomize/base/,每个组件是一份"补丁",这基本就是生产环境 GitOps 的缩影。
  • 你能看到存储演进的活例子cartservice同时提供 Redis、Spanner、AlloyDB 三种购物车实现(见 src/cartservice/src/cartstore/),"换数据库"在微服务里到底意味着什么,这里写得明明白白。

动手,从你的第一个集群开始

别再收藏了——挑一台机器把 Minikube 拉起来,skaffold run跑通 Online Boutique,然后打开checkoutservice的源码,沿着一次下单把 11 个服务串起来。你会发现,云原生的第一课不在文档里,而在你kubectl get pods的那一刻。

【免费下载链接】microservices-demoSample cloud-first application with 10 microservices showcasing Kubernetes, Istio, and gRPC.项目地址: https://gitcode.com/GitHub_Trending/mi/microservices-demo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询