ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学习笔记----微服务网关API

2021-11-21 14:34:15  阅读:151  来源: 互联网

标签:网关 服务 请求 ---- API Ocelot path


 

前言

书接上文,上文书说到:微服务架构概念、优缺点、划分原则以及技术选择,既然指导思想有了,那就用实践学习来检验。

一,网关API

1,何为网关API?

网关网关API——整个系统的统一入口,往上,接收一切外界请求;往下,通知内部所有服务。简单来讲就是一个“门”。

2,网关API功能作用

(1)身份认证与授权

这“家”里穷不穷富不富的先不说,有门了就不能随便让人进,这要来坏人那就得出事,所以得给门加个锁,有钥匙(token)的您里面请,没钥匙的........

当然了进来了也让人随便跑,这“二奶奶”能不能去“大奶奶”的房还得看老爷的意思,为了家里和谐还是各自回厢房歇着。

身份认证与授权:保证系统安全访问

(2)负载均衡

老爷家挺大的,一到过年过节家里客人也多;家里大少爷饱读诗书又有功名在身,平时喜好交朋友;老爷甚是喜欢老早就把东西厢房给了他;

看门的一听是找大少爷的,不是让去东厢房就是让去西厢房,把这人情事故处理的妥妥当当的。

(3)访问限流

看门的这来的人太多把门都快挤坏了,赶紧把情况报告给老爷,老爷一方面怕大少爷会客累坏身子,另一方面怕门出问题这都是事;

“今日各位朋友远道而来,令寒舍蓬荜生辉倍感荣幸,大家的热情鄙人和犬子都感受到,奈何这家小门小实在照顾不周,眼看天色也不早了,、

还请离家近的朋友把机会留给远方的朋友,远方的朋友也请你们排排队 这样也能快一点把事办了”老爷说完一拱手就见门口的情况好了很多,转身就回屋了。

......东街李员外意外路过看了十分眼红,心里暗下决定赶明照着这个给也弄一个。。。

二,Ocelot网关搭建

李员外也是实干主义的人说干就干,上到性能检查下到实施全部亲力亲为,最终综合考虑就用Ocelot

官网:https://ocelot.readthedocs.io/

1,第一步创建一个.net core web 项目


  

 

 

 2.使用 NuGet安装Ocelot的相关组件
  

 

  因为框架使用的是 .net core 3.1 所以只能安装16.0一下版本,,,

 3,修改程序配置 

   在startup 里面添加ocelot服务

     

 

 

       在Program 里面添加ocelot配置

 

   

 

 

 

    ocelot.json:

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/product/{path}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 4001
        },
        {
          "Host": "localhost",
          "Port": 4002
        }
      ],
      "UpstreamPathTemplate": "/api/product/{path}",
      "UpstreamHttpMethod": [
        "Get",
        "Post"
      ],
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    },
    {
      "DownstreamPathTemplate": "/order/{path}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 4050
        }
      ],
      "UpstreamPathTemplate": "/api/order/{path}",
      "UpstreamHttpMethod": [
        "Get",
        "Post"
      ],
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost:4000"
  }
} 

 

 参数说明:
  DownstreamPathTemplate:下游具体服务地址,{path}占位变量,"path"可以是其他字符支持自定义

  DownstreamScheme:下游请求方案,可以使用:http/https

  DownstreamHostAndPorts:下游服务的主机和端口集合,对下游服务的请求进行负载平衡, Ocelot 允许添加多个条目,然后选择一个负载平衡器

  UpstreamPathTemplate:上游路径地址,上游的路径无需和下游一致

  UpstreamHttpMethod:上游接受请求方式集合:[ "Get", "Post", "Put", "Delete" ]

  LoadBalancerOptions:负载均衡平衡器,4个参数可选RoundRobin - 循环访问,NoLoadBalancer - 从配置或服务发现中获取第一个可用服务,"LeastConnection" 请求最少的服务发送新请求,

  CookieStickySessions - 使用 cookie 将所有请求粘贴到特定服务器

  GlobalConfiguration:全局配置,BaseUrlocelot网关运行的地址

  

  其中product 设置使用两个端4001,4002 模拟负载均衡,按上述简单配置不出问题运行效果如下:
  

  

 

 

 

 

 客户端对服务的调用使用网关进行统一中转,简化客户端请求配置,服务端也做跨域也方便,避免了服务地址直接暴露

 如果ocelot.json 中下游端口等其他的配置经常变化修改对整个系统并不是很友好,所以Ocelot 允许指定服务发现提供者,并将使用它来查找 Ocelot 将请求转发到的下游服务的主机和端口

 

 下一篇 Ocelot中的服务发现、注册、健康检查以及简单的服务治理

 

--------to be continue --------


 

 


标签:网关,服务,请求,----,API,Ocelot,path
来源: https://www.cnblogs.com/NewInfo/p/15584381.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有