本文翻译自微软Docs, 内嵌译者多年使用的参悟,如理解有误,请不吝赐教。

微软与社区专家合作,开发了功能齐全的云原生微服务示例应用eShopOnContainers。

该应用旨在展示使用.NET、Docker以及可选的Azure,Kubernetes技术来构建电商平台。

功能 & 要求

简要回顾eShopOnContainers应用的业务功能和技术目标,eShopOnContainers示例应用代表一个出售各种实体产品的(例如T恤和咖啡杯)电商平台。

电商平台要实现的一些基本功能:

  • 列出商品目录
  • 按类型过滤商品
  • 按品牌过滤商品
  • 将商品添加到购物车
  • 编辑或删除购物车中的物品
  • 支付
  • 注册帐号
  • 登录
  • 登出
  • 订单审核

示例应用还具有以下非功能性要求:

  • 必须具有高可用性,并且必须自动扩展以满足不断增长的流量(并在流量减少后再缩减)。
  • 提供易于使用的运行状态监视和诊断日志,以帮助解决遇到的问题。
  • 它应该支持敏捷开发,包括对持续集成和部署(CI / CD)的支持。
  • 除了支持传统的和SPA Web前端之外,该应用程序还必须支持不同系统的移动客户端应用程序。
  • 支持跨平台托管和跨平台开发。


Web或移动客户端通过HTTPS访问ASP.NET Core MVC服务器程序或API网关程序

API网关具有多种优势,例如将后端服务与各个前端客户端解耦,并提供更好的安全性。

该应用程序还利用了BFF模式(服务于前端的后端),该模式建议为每个前端客户端创建单独的API网关。

上面的体系图演示了基于请求是来自Web客户端还是来自移动客户端的API网关


示例应用的功能被分解为许多不同的微服务:

  • 负责身份验证和身份
  • 列出产品目录中的商品
  • 购物车管理以及订单管理。

这些独立的服务都有其自己的持久化存储,没有可以与所有服务交互的单个主数据存储,

服务之间的协调和通信是通过消息总线来完成的。


每个微服务根据其各自的需求独立设计。因此它们的技术堆栈是可以不同的(目前服务均是.NET构建并为云设计)。

简单的服务提供了基本的创建、读取、更新、删除访问(CRUD),而更高级的服务则使用领域驱动设计方法和模式来管理业务复杂性。

代码结构

因为eShopOnContainers示例程序使用微服务,在其GitHub存储库中包含许多单独的项目文件。

除了独立的项目方案和可执行文件之外,各种服务还被设计为在独立的容器中运行。

下图显示了完整的Visual Studio解决方案,管理组织了各种不同的项目。

该代码被组织为支持不同的微服务,并且在每个微服务中,代码分为领域逻辑、基础设施以及用户界面/服务端点。

Ref

.NET微服务最佳实践 eShopOnContainers的更多相关文章

  1. Kubernetes 微服务最佳实践

    本文由个人笔记 ryan4yin/knowledge 整理而来 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes 配置」,是我个人的「最佳实践」. 其中大部 ...

  2. RESTful服务最佳实践

    本文主要读者 引言 REST是什么 统一接口 基于资源 通过表征来操作资源 自描述的信息 超媒体即应用状态引擎(HATEOAS) 无状态 可缓存 C-S架构 分层系统 按需编码(可选) REST快速提 ...

  3. 闲聊 “今日头条Go建千亿级微服务的实践”

      背景    今天跟同事偶然看到<今日头条Go建千亿级微服务的实践>文章,故做了一些探讨,与大家分享下,也欢迎大家多多共同探讨!.     其他资料:   如何理解 Golang 中“不 ...

  4. 我们必须要知道的RESTful服务最佳实践

    看过很多RESTful相关的文章总结,参齐不齐,结合工作中的使用,非常有必要归纳一下关于RESTful架构方式了,RESTful只是一种架构方式的约束,给出一种约定的标准,完全严格遵守RESTful标 ...

  5. python3和grpc的微服务探索实践

    对于微服务的实践,一般都是基于Java和Golang的,博主最近研究了下基于Python的微服务实践,现在通过一个简单的服务来分析Python技术栈的微服务实践 技术栈:Python3 + grpc ...

  6. 基于 Docker 的微服务架构实践

    本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...

  7. 微服务架构实践 - 你只懂docker与spring boot就够了吗?

    微服务架构实践 - 你只懂docker与spring boot就够了吗? 作者 浮云发发 已关注 2017.02.27 02:50* 字数 2613 阅读 2583评论 6喜欢 35赞赏 2 微服务并 ...

  8. NET Core 2.0 微服务跨平台实践

    NET Core 2.0 微服务跨平台实践 相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和 ...

  9. 今日头条Go建千亿级微服务的实践

    今日头条Go建千亿级微服务的实践_36氪 http://36kr.com/p/5073181.html

随机推荐

  1. Golang内建库学习笔记(2)-web服务器相关

    package main import ( "net/http" "fmt" "strings" "log" ) fun ...

  2. POE供电

    1.定位:POE (Power Over Ethernet)指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下,在为一些基于IP的终端(如IP电话机.无线局域网接入点AP.网络摄像机等)传 ...

  3. Vue-Cli程序环境搭建

    环境搭建 ##1.下载node.js cmd输入 node -v 查看是否能够正确打印出版本号 cmd输入 npm -v 查看是否能够正确打印出版本号 ##2.安装node.js淘宝镜像加速器 ### ...

  4. 织梦(DedeCms)的安全问题解决办法

    网上大家也看到DEDECMS这套程序,虽然便捷草根站长的快速建站,但安全问题也是非常多的.DEDE官方也在很久之前就已经不再对这套系统进行什么版本升级了,最多就是一些补丁修复: 好,废话不多说,下面整 ...

  5. 搭建 mariadb 数据库主从同步

    一.主(master)数据库配置 1. my.cnf 添加配置 [mariadb] log-bin server_id=1 log-basename=master1 binlog-format=mix ...

  6. Flink-v1.12官方网站翻译-P011-Concepts-Overview

    概念-概览 实践培训解释了作为Flink的API基础的有状态和及时流处理的基本概念,并提供了这些机制如何在应用中使用的例子.有状态的流处理是在数据管道和ETL的背景下介绍的,并在容错部分进一步发展.在 ...

  7. 嵌入式的我们为什么要学ROS

  8. 2020年10月ICPC & 天梯赛 选拔赛【ACFJ】

    A. 表达式 题意 题解 将所有数字替换为A,运算符替换为O,然后不断合并(AOA),判断表达式最后是否为A即可. 注意将数字替换时判断有无前导零. 代码 #include <bits/stdc ...

  9. HDU 1173 思路题

    题目大意 有n个地点(坐标为实数)需要挖矿,让选择一个地点,使得在这个地方建造基地,到n个地点的距离和最短,输出基地的坐标. 题解+代码: 1 /* 2 把这个二维分开看(即把所有点投影到x轴上,再把 ...

  10. 数位dp整理 && 例题HDU - 2089 不要62 && 例题 HDU - 3555 Bomb

    数位dp: 数位dp是一种计数用的dp,一般就是要统计一个区间[li,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp.数位的含义:一个数有个位.十位.百位.千位......数 ...