• 重新整理 .net core 实践篇————网关[三十六]


    前言

    简单整理一下网关。

    正文

    在介绍网关之前,介绍一下BFF,BFF全称是Backend For Frontend,它负责认证授权,服务聚合,目标是为前端提供服务。

    说的通透一点,就是有没有见过这种服务。

    上述就是buff通过代理其他服务来让前端访问。这时候就有人说了,这不就是网关吗?

    是的,个人理解这本来就属于一种网关。以前网关只负责数据协议的转发,现在变得高级了,功能更多了。

    但是如果只负责数据协议的转发,那么就有一个专门的认证服务。每次用户访问网关的时候,网关要转到认证服务去认证,然后才能到后面具体访问的服务。

    这就变得非常麻烦了,故而就把认证授权移到了网关中,这样系统的复杂性就减少了。

    那么什么聚合服务呢?

    上文中服务2和服务3进行了聚合,就是某个服务调用了服务2和服务3的接口实现了新的接口,暴露出去了。

    同样,如果服务2和服务3的聚合的接口比较少,且改动性比较少的情况下,也可以直接放到网关中,这样避免系统复杂性。

    其实现实中很多东西没有必要全部分开,一般是考虑到安全性和稳定性,安全性没得说,必须的东西,稳定性就是改动该服务后影响的服务节点是多少,如果是高频改动,那么即使是一个接口也要独立出去。

    像下面的,因为如果有不同领域的应用,那么最好分开来,因为一个网关的改动会影响到其他不同领域的应用。

    然后这里有一个详细的介绍演化的:https://blog.csdn.net/yang75108/article/details/86987404.

    那么来看一下.net core如何打造网关吧。

    1. 添加Ocelot

    2. 添加配置文件 ocelot.json

    3. 添加配置读取代码

    4. 注册Ocelot 服务

    5. 注册Ocelot 中间件

    可以先看下文档哈。https://github.com/ThreeMammals/Ocelot

    这里就演示一下getStart。因为如果演示复杂的,不一定用的上,而且整理的混乱,有需求才有实践。千万级之所以是千万级应用,是因为用户千万级。

    首先安装好Ocelot。

    添加服务:

    services.AddOcelot(Configuration);
    

    注册中间件:

     app.UseOcelot().Wait();
    

    app.UseOcelot().Wait(); 应该放在中间件的最后,为什么呢?

    因为网关内可能有一些其他api,比如说认证授权的,那么让那些api先生效,最后才执行到Ocelot网关处理部分。

      "ReRoutes": [
        {
          "DownstreamPathTemplate": "/api/order/get",
          "DownstreamScheme": "http",
          "DownstreamHostAndPorts": [
            {
              "Host": "localhost",
              "Port": 9001
            }
          ],
          "UpStreamPathTemplate": "/api/order/get",
          "UpstreamHttpMethod": [ "Get" ]
        }
      ],
      "GlobalConfiguration": {
        "BaseUrl": "http://localhost:5000"
      },
    

    然后在9001中加入请求:

    [HttpGet("Get")]
    public async Task<string> Get()
    {
    	return "我是一个内部请求.";
    }
    

    log如下:

    我们可以直接通过配置来实现网关,当然这是大部分,这些看文档就好,有些需要做其他处理的,那么就可以自己在网关中写api了。

    下一节在网关中实现JWT来完成身份认证和授权。后面系列中,本系列50余节后,因为涉及到docker和k8s,故而整理了一下k8s的东西,共40余节,因为博客园一天只能放一篇,故而持续放出。

  • 相关阅读:
    十:audio 音频
    八: 操作提示(wxml 即将废弃)
    九: 操作提示(js版本)
    七: 表单标签(3)
    四: 基本标签
    五: 表单标签(1)
    六: 表单标签(2)
    webservice和wcf和web.api简单介绍
    Qt 中事件与处理
    Qt 事件过滤器
  • 原文地址:https://www.cnblogs.com/aoximin/p/14968243.html
Copyright © 2020-2023  润新知