一、MSA 简介

     4、服务

    
创造 MSA 服务时,必须继承来自 MSA 的 Service类。

     6、MSA API 可视化表达文档自动生成的贯彻

    
在宿主环境中加如下配置:

Plugins.Add(new SwaggerFeature());

    
如若急需在 MSA API
可视化表达文档中可知看出各请求参数、响应的含义表明,那么需要为 Request
DTO、Response DTO 对象的各属性标上 ApiMember,代码参考如下:

 1 public class OrderRequest : IReturn<OrderResponse>
 2 {
 3    [ApiMember(Name = "Id", Description = "订单 ID 号", IsRequired = false)]
 4    public int Id { get; set; }
 5    [ApiMember(Name = "CustomerName", Description = "客户名", IsRequired = false)]
 6    public string CustomerName { get; set; }
 7    //......
 8    [ApiMember(Name = "OrderItemList", Description = "订购的产品列表", IsRequired = false)]
 9    public List<OrderItem> OrderItemList { get; set; }
10 } 

    
运行结果如下图所示:

    
XML 1

    
    
    
在 MSA API
可视化表明文档中突显各请求参数、响应的含义表达

     2、 路由

         
A、MSA 自身提供的默认路由是:

/[xml|json|html|jsv|csv]/[reply|oneway]/[Request DTO 名] [(?query 参数 1={值}&query 参数 2={值}&......&query 参数 n={值})]。

         
B、创设自定义路由,其创设方法是:使用
RouteAttribute 或在宿主环境中布置。提供的 MSA Demo
接纳的是在宿主环境中配备路由这种模式来创立自定义路由。

     4.1、API Gateway 的简介

    
API Gateway
风格的主旨理念是运用一个轻量级的音信网关作为所有客户端的主入口,并且在
API Gateway 层面上落实通用的非功用性需求。如下图所示:所有的劳动通过 API
网关来暴露,这是具有客户端访问的唯一入口;假如一个劳务要拜访另一个劳务,也要通过这一个网关。

    
XML 2

    
    
    
    
    
    
    
    
负有服务通过一个 API
网关来显露

    
一旦 API
网关允许客户端消费一个受管制的 API,那么大家就可以以受管制的 API
情势利用它来显露那一个微服务所实现的政工逻辑。API 网关以 NIO、IOCP
来连续内部受管制的 API,以实现 API 网关的高并发。

     4.2、API Gateway 的优点

    
XML 3

  • 网络隔离:微服务部署在了内网,通过
    API Gateway 开放给 PartnerAPI、WebAPI 或 MobileAPI。
  • 在网关层面的轻量级音讯路由和更换。
  • 在网关层面对存在的微服务提供必要的架空。例如,网关能够挑选对两样的用户透露不同的
    API。
  • 一个主旨的地点提供非效率性的力量,这个力量可复用,
    比如超时、限流、熔断、监控、日志记录等。
  • 经过适用
    API
    网关形式,微服务可以变得尤其轻量,因为非效率性需求都在网关上落实了。
  • 集合安全管控。

     4.5、API Gateway 的使用

    
在应用 API Gateway
此前,需要先配备网关参数。网关参数的布置是在自主开发的 API
网关后台管理子系统中举办:

    
XML 4

    
    
    
    
    
在自立开发的 API
网关后台管理子系统中布局网关参数

三、微服务治理

    
在我们自主开发的框架管理类别中,举办接口注册,请见下图。其中,规定内部服务访问名的命名规范是:/{***瑟维斯(Service)(Service)}/
方法名,如 /Order瑟维斯(Service)(Service)/CreateOrder;规定外部服务走访名 OpenApiName
的命名规范是:{各产品线的缩写英文名}方法名,如 FltCreateOrder,其中 Flt
表示国内机票业务的缩写英文名。

    
XML 5

    
    
    
    
    
    
    
    
    
    
MSA 接口注册页

     3、如何注脚请求参数的合法性

    
假设您需要在付给请求参数前,验证请求参数是否必填或是否合法,那么表明逻辑必须写在后续自
MSA 的 AbstractValidator的类里(参考例子请见 MSA Demo 的
OrderValidator.cs),然后在宿主环境中开展开启验证的布置:

Plugins.Add(new ValidationFeature()); 
container.RegisterValidator(typeof(OrderValidator));

     4.4、API Gateway 的功能

    
API Gateway 重要实现以下功能:

  1. *路由映射:外部服务走访名映射到对应的里边服务走访名。*
  2. *权限验证:包括针对客户角色的拜访授权验证、针对客户的拜访授权验证、IP
    黑名单验证。*
  3. *超时处理:当
    API 网关调用的内部服务响应时间领先了在独立开发的 API
    网关后台管理子系统中所设置的同意最长的逾期时间时,API
    网关会即刻停下调用,并回到相关音信给您。*
  4. *限流控制:当你通过
    API 网关调用其中服务的频率达到在某个阈值时,API
    网关会立即做断开链路处理。过了光阴后,链路会自动关闭回去。*
  5. *熔断处理:熔断处理对避免无谓的资源消耗特别有用,当通过
    API 网关调用的其中服务出现异常的频率高达某个阈值时,那么 API
    网关会做临时熔断处理即临时断开链路,暂时截止你对那些内部服务的调用。临时熔断后,过了一段时间后,链路会自动关闭回去。*
  6. *日志音信记录:会记录客户
    IP、客户请求参数、重回结果、相当消息等信息。*

     4.3、API Gateway 的架构

    
XML 6

     1.1、MSA 是什么

    
微服务架构 MSA 是 Microservice Architect
的简称,它是一种架构格局,它提倡将单纯应用程序划分成一组小的服务,服务中间相互通讯、相互配合,为用户提供最后价值。它与
SOA 之间的区别如下:

    
XML 7

     1、服务托管

    
服务端的劳动对外提供劳动前,必须先要把服务端给托管起来。MSA
提供了通过 IIS、Self-Host
等多种情势把服务端给托管起来,宿主环境足以是控制台应用或 Windows 瑟维斯(Service)(Service)或 ASP.NET Web 应用或 ASP.NET MVC 应用。提供的 MSA Demo 的宿主环境用的是
ASP.NET Web 应用。

五、Demo 下载及更多材料

 

随笔转载自:http://www.infoq.com/cn/articles/architecture-practice-06-microservice-architect?utm_source=infoq&utm_campaign=user_page&utm_medium=link

二、MSA 框架的施用

     1.3、MSA 框架实现架构

     MSA
服务端的架构请见下图的首先张图,MSA 的 HTTP
客户端架构请见下图的第二张图。MSA 的内部是白手起家在原生的 ASP.NET
IHttpHandler 之上实现的,援助 JSON、XML、JSV、HTML、Message
Pack、ProtoBuf、CSV 等信息格式。

    
XML 8

                                                  XML,MSA
服务端的架构

    
XML 9

                                             MSA
HTTP Client 的架构

     5、MSA 内置的客户端

    
    
5.1
、MSA
内置了一些便利访问的客户端,这多少个目的都实现了 IService(Service)Client
接口,其中襄助 REST 的客户端还都实现了 IRestClient 接口。

    
    
        这个客户端对象包括:JsonService(Service)Client、JsvService(Service)Client、XmlService(Service)Client、MsgPackServiceClient、ProtoBuf瑟维斯(Service)Client、Soap11ServiceClient、Soap12瑟维斯(Service)Client
等。

         
**
       
**从名称可以看来,这二种不同之处在于支撑的连串化和反连串化格式不同。因为它们实现的是一模一样的接口,所以它们的用法相同,也可以相互替换。

         
**
       
**MSA Demo 中用到了
JsonServiceClient 和 ProtoBufService(Service)Client 这三种客户端,其中当用到
ProtoBuf瑟维斯(Service)Client 客户端时,你还亟需做到如下工作:

    
    
    
    
a、除了需要引用 MSA.dll 外,还需要引用
protobuf-net.dll。

    
    
    
    
b、需要在宿主环境中举办如下配置:

                    Plugins.Add(new ProtoBufFormat());

    
    
    
    
c、必须分别给 Request DTO 对象和 Response
DTO 对象的各属性标上 [DataMember(Order = {0})] 特性,具体写法请见 MSA
Demo 的 ProductRequestDTO.cs 和 ProductResponseDTO.cs。

    
    
5.2
、MSA 内置的客户端提供
Get、Send、Post、Put、Delete 等办法。查询数据一般用 Get
方法,新增操作一般用 Post 方法,更新操作一般用 Put 方法,删除操作一般用
Delete 方法。这多少个艺术都有重载。

    
    
    
   
以下是 Get 方法的里边一个签署:

                    TResponse Get<TResponse>(IReturn<TResponse> requestDto);

     1.2、我们的 MSA 框架

    
大家的微服务框架 MsaFx.dll 是个按照 Service(Service)Stack 4.0.60
包装实现的.NET Web Service(Service)s 框架,而 瑟维斯(Service)Stack
本身协助通用的轻量级协议和 Metadata。MsaFx 与平常 Web Services 框架如
WCF 相相比,重要优势如下:

  1. 高性能:性能好、速度快。
  2. 协理跨平台运行:基于
    MsaFx 开发出的 Web Services 既可以运转在 Windows
    环境中,又可以运转在支撑 Mono 的 Linux 环境中。
  3. 支撑多协议:如
    JSON 格式的也支撑 XSD。
  4. 更加 Web
    化:RESTful。
  5. 服务端实现与客户端实现的完全解耦:MSA
    基于消息的计划性,使得服务端的 API
    改变并不会破坏现有的客户端,达到服务端实现与客户端实现完全解耦的目标。
  6. MSA API
    可视化表达文档便于你调试。
  7. 易学:使用 MSA
    举行开发和维护服务所需的技巧和时间投入要小很多。
  8. 易用:简化了
    REST 以及 WCF SOAP 风格的 Web 瑟维斯(Service)(Service)s 的开发进程。

四、微服务网关 API Gateway

     7、运行结果

    
先运行托管应用(如 MSA Demo 中
ServiceHost 项目),出现下图所示的 Metadata
页。然后再运行客户端来调用微服务;也可通过浏览器查看数据,网址输入格式如:

     http://localhost:34833/orders/1.html?CustomerName= 客户 _1&IsTakeAway=true&StatusCode=1&CreatedDate=2017-08-21 10:58:48.230

    
或:

          http://localhost:34833/html/reply/GetOrderRequest?Id=1&CustomerName= 客户 _1&IsTakeAway=true&StatusCode=1&CreatedDate=2017-08-21 10:58:48.230

    
其中,第 1 个网址格式规则就是 MSA
Demo 中在宿主环境中所配的自定义路由规则,第 2 个网址格式规则就是由 MSA
提供的默认路由规则。

    
单击下图所示 Metadata 页中的【MSA API
UI】后,进入下图所示的 MSA API
可视化表明文档界面,开发职员可以通过这份由 MSA
自动生成的注明文档举行调节,异常利于。

    
XML 10

    
    
    
    
    
    
    
    
    
Metadata 页

    
XML 11

    
    
    
    
    
    
  
MSA API 可视化表达文档界面

相关文章

网站地图xml地图