11个微服务、5种语言、1套gRPC:Online Boutique 微服务电商入门

11个微服务、5种语言、1套gRPC:Online Boutique 微服务电商入门 11个微服务、5种语言、1套gRPCOnline Boutique 微服务电商入门【免费下载链接】microservices-demoSample cloud-first application with 10 microservices showcasing Kubernetes, Istio, and gRPC.项目地址: https://gitcode.com/GitHub_Trending/mi/microservices-demoOnline Boutique 是 Google Cloud 出品的云原生微服务电商演示项目11 个微服务、5 种语言、全程 gRPC 通信能浏览商品、加购物车、走完下单全流程。适合刚接触 Kubernetes 与微服务的开发者和想搞懂服务拆分原理的技术用户。 Online Boutique 一键部署GKE 与本地集群两条路最快的路径是 GKE。装好gcloud和kubectl建一个自动模式集群然后把仓库里预渲染好的清单一把应用gcloud container clusters create-auto online-boutique --regionus-central1 kubectl apply -f release/kubernetes-manifests.yaml等 2 到 3 分钟kubectl get pods看到 12 个 Pod11 个微服务加 1 个 Redis全部 Running再用kubectl get service frontend-external取外部 IP浏览器打开就是店铺首页。完整步骤见 根目录 README 的 Quickstart 一节。没有 GCP 项目也没关系。本地用 Minikube 或 Kind 起个集群再装一个 Skaffold负责批量构建并推送这 11 个镜像跑skaffold run一条命令搞定构建、推送、部署。注意本地集群至少要 4 CPU、4 GiB 内存、32 GB 磁盘文档里写得很明确配置不够会直接翻车细节在 开发指南。 架构是怎么拆的服务清单、下单调用链与设计取舍11个微服务的语言分布Go、C#、Node.js、Python、Java按 架构说明 数一遍frontend网站入口、productcatalogservice商品目录、shippingservice运费与发货、checkoutservice下单编排都是 Gocartservice购物车底层 Redis是 C#currencyservice汇率用的是欧洲央行实时数据和 paymentservice模拟刷卡是 Node.jsemailservice确认邮件和 recommendationservice推荐是 Pythonadservice按上下文词出广告文案是 Java。第 11 个是 loadgenerator用 Locust 持续模拟真实用户流量所以打开页面时购物车和下单记录未必是空的——这是它故意干的。服务之间全部走 gRPC接口契约集中在 protos/demo.proto 里一共定义了 CartService、CheckoutService、ProductCatalogService 等 11 个 service各语言按同一份 proto 生成桩代码跨语言调用时谁也不用手写序列化。一次请求的旅程点下Place Order之后发生了什么一次下单请求到底穿过了多少层服务答案比直觉多。frontend 收到下单表单转手调用 checkoutservice 的PlaceOrder之后编排开始接力先找 cartservice 取购物车、productcatalogservice 查商品价格途中 currencyservice 负责把金额折算成用户选的货币算完总价后 paymentservice 模拟扣款shippingservice 生成物流单号最后 emailservice 发出确认邮件cartservice 清空购物车。一条请求串起 6 到 7 个服务——这就是为什么它是讲分布式事务、超时与降级的好素材。为什么选 gRPC 和多语言混编为什么不用 RESTgRPC 底层是 HTTP/2 Protocol Buffersproto 文件是唯一事实来源加个字段不会把其他 10 个服务全部搞挂。为什么语言不统一因为这正是真实企业的常态Go 写吞吐要求高的入口C# 团队负责购物车Node.js 写 IO 密集的支付和汇率。项目刻意复刻了技术栈异构 统一契约这件事让 gRPC 从课本概念变成你能在本地摸到的调用链。 拿它练什么四个上手就能做的场景服务网格实验→ service-mesh-istio 组件 一条 kustomize 命令给 11 个服务套上 Istio 网格。收益你可以亲眼看到 mTLS、流量镜像、故障注入在真实调用链上的效果比读 Service Mesh 概念文直观十倍。网络策略与混沌演练→ 仓库自带 network-policies 组件默认全拒、按服务逐个放行很适合当网络隔离的练习题。配合kubectl直接 kill 某个 Pod比如 currencyservice观察下单页价格是怎么兜底的就是一次最小混沌工程。教学演示→ 它天然是一份微服务全家福多语言、有缓存Redis、有编排服务、有持续压测。给学生或团队演示服务拆分、可观测性Cloud Operations 组件 可挂监控和链路追踪时不用自己造轮子。二次开发→ 想加自己的服务adding-new-microservice 指南 手把手教你新增一个微服务并接入调用链数据层想换掉 Rediscartservice 里已经留好了 AlloyDB 和 Spanner 两种实现换组件即可生效。⚠️ 新手避坑本地资源、端口与加载器三个高频坑第一个坑是本地资源给太少。11 个容器加 Redis 挤在一台机器上4 CPU/4 GiB 是下限不是推荐值。构建慢到怀疑人生时也别慌skaffold run首次全量构建约 20 分钟文档里明说了first time will be slow。第二个坑是端口与 IP 的假象。本地用kubectl port-forward deployment/frontend 8080:8080访问时先确认 8080 没被 Docker Desktop 之类占掉GKE 上frontend-external的 EXTERNAL-IP 显示pending也不是故障负载均衡器 provisioning 需要几分钟等一等再查一次就好。第三个坑是把 loadgenerator 的流量当成 bug。页面数据会自己变、接口有陌生调用方多半是内置的 Locust 压测器在工作而不是有人蹭你的服务。想清静点without-loadgenerator 组件 一键移除它。先把它跑起来比读十篇文章都管用。【免费下载链接】microservices-demoSample cloud-first application with 10 microservices showcasing Kubernetes, Istio, and gRPC.项目地址: https://gitcode.com/GitHub_Trending/mi/microservices-demo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考