API-Gateway

.NET Core 微服务—API网关(Ocelot) 教程 [二]

血红的双手。 提交于 2020-08-09 13:31:45
上篇文章( .NET Core 微服务—API网关(Ocelot) 教程 [一] )介绍了Ocelot 的相关介绍。 接下来就一起来看如何使用,让它运行起来。 环境准备  为了验证Ocelot 网关效果,我们先创建3个webapi项目:目录api(Api.Catalog)、订单api(Api.Ordering)、Ocelot网关(ApiGateway.Ocelot);并为每个WebApi项目添加Values控制器(ValuesController),用于区分最终调用效果   如下图:    Ocelot使用    1、添加 Ocelot包依赖:    接下来使用Nuget包管理工具为ApiGateway.Ocelot项目添加Ocelot包引用:      当然也可用使用命令方式添加Ocelot包: Install-Package Ocelot   2、添加Ocelot配置文件:(重点)      向ApiGateway.Ocelot项目添加一个Ocelot.json配置文件,并修改配置文件为如下内容:   { " GlobalConfiguration " : { }, " Routes " : [ { " DownstreamPathTemplate " : " /api/{everything} " , " DownstreamScheme " : " http " , "

静态网站利用云函数 SCF + API 网关访问自定义后端接口

孤街浪徒 提交于 2020-08-09 09:23:22
本文介绍使用全静态页面的网站如何利用腾讯云的 SCF+API 服务实现简单的后端接口,并提供了一个 Python 出题器的实例演示。 相关服务介绍: 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。 API 网关(API Gateway)是 API 托管服务,提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。 前几天为我家小盆友用 Python 写了个简单的自动数学题出题器,小家伙十分好奇,隔三差五的就要来让我演示一番 😏。只是每次都要拿本出来输命令给他看实在有些麻烦,于是想着能不能加个前端页面调用,直接打开页面就能看到运行效果。 作为一个行动派派,我目标锁定了用 SCF+API 的方式,也就是现在很🔥的 serveless 方案。最大的好处当然是不用再伺候服务器了,少了很多搭建的麻烦。而且这个按实际使用量计费,对于小网站再适合不过了。 下面介绍下要怎么实现了。首先,你要有个 腾讯云 账号,然后参考👇的简单步骤: 创建云函数 SCF。 创建 API Gateway,后台指定调用步骤 1 建好的云函数。 API gateway中 新建密钥,使用计划,实现访问控制并发布。 写前端页面,调用刚写好的 API。 测试,解决各种 bug,大功告成! 创建云函数

基于 API 网关 + 云函数 SCF 部署 Serverless 外卖订单系统

≯℡__Kan透↙ 提交于 2020-08-08 18:20:18
API 网关结合云函数 SCF 的使用场景非常丰富,本文将介绍如何基于 API 网关+云函数 SCF 快速部署 Serverless 的外卖订单系统。 消息推送使用的典型场景 外卖订单系统架构图 Demo 实战 1. 安装Serverless Framework npm install -g serverless 2. 初始化项目模板 sls init -t websocket-order 3. 查看项目目录 下载到本地后,查看项目目录结构如下: 包含 DB、网关、函数等多个子模块。 db 目录用于创建 PG Serverless 数据库实例 apigateway 用于创建对应的 API : /bill 下单 API,HTTP 类型 /get_shop_info,获取店铺菜单 API /pgws,用于做消息推送的 websocket API 函数列表如下: 消息推送相关函数: 注册函数 ws_register.py, 配置 DB 的环境变量 传输函数 ws_trans.py ,配置 DB 的环境变量以及 apiid= 消息推送API 注销函数 ws_unregister.py ,配置 DB 的环境变量以及 apiid= 消息推送API 下单函数 bill.py , 配置 DB 的环境变量以及 apiid= 消息推送API 拉取店铺信息函数 get_shop_info.py,配置

基于Docker的Consul服务发现集群搭建

痞子三分冷 提交于 2020-08-06 13:18:47
在去年的 .NET Core微服务系列文章 中,初步学习了一下Consul服务发现,总结了 两篇文章 。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境。 一、示例整体架构   此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请移步我之前的文章加以了解:《 .NET Core微服务之基于Consul实现服务治理 》。其中,Consul的Client和Server节点共同构成一个Data Center,而API Gateway则从Consul中获取到服务的IP和端口号,并返回给服务消费者。这里的API Gateway是基于Ocelot来实现的,它不是这里的重点,也就不过多说明了,不了解的朋友请移步我的另一篇:《 .NET Core微服务之基于Ocelot实现API网关服务 》。 二、Consul集群搭建 2.1 Consul镜像拉取 docker pull consul:1.4.4   验证:docker images    2.2 Consul Server实例创建   以下我的实践是在一台机器上(CentOS 7)操作的

你问我答:微服务治理应该如何去做?

爷,独闯天下 提交于 2020-08-06 10:33:36
【你问我答】是 BoCloud 博云最新上线的互动类栏目,每周我们将收集和整理有关容器、微服务、DevOps、多云管理等方面的 企业 IT 建设问题,由博云产品团队进行详细解答。如果你有任何感兴趣的相关问题,欢迎留言提问。 以下是本周 “ 微服务 ” 相关问题精选: 网友1:微服务治理应该如何去做? 微服务化应该是从企业的单个系统考虑,还是从整体IT架构去考虑?微服务治理应该如何去做? 博云产品团队:微服务的治理分很多方面,简单的来谈至少三个层面: 微服务底层管理,微服务之所以需要治理,是因为其逻辑复杂,运维困难,所以需要提供注册中心,配置中心,网关,监控等多种组件做为帮助,所以这个层面是对这些组件的治理。 微服务外层治理,主要关注于用户的使用,这就涉及到 DevOps ,需要对服务的全生命周期做治理,从想法到实现,再到更新升级。当然这里很重要的一块就是用户权限等问题,部门角色也不可忽略的。 3.从微服务的业务层治理,算是微服务的上层治理,这一层主要关注于服务的业务实现,跟踪业务的调用链,发现调用过程中的逻辑问题,效率问题,冗余问题等等。 网友2:微服务框架,容器云,ServiceMesh、传统API Gateway产品都提供注册发现,它们各适合什么场景?如何选型? 服务化架构中,服务注册和发现是重要的组件,微服务框架中有注册发现,比如Eureka, consul等

基于Docker的Consul服务发现集群搭建

风格不统一 提交于 2020-08-06 09:23:02
在去年的 .NET Core微服务系列文章 中,初步学习了一下Consul服务发现,总结了 两篇文章 。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境。 一、示例整体架构   此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请移步我之前的文章加以了解:《 .NET Core微服务之基于Consul实现服务治理 》。其中,Consul的Client和Server节点共同构成一个Data Center,而API Gateway则从Consul中获取到服务的IP和端口号,并返回给服务消费者。这里的API Gateway是基于Ocelot来实现的,它不是这里的重点,也就不过多说明了,不了解的朋友请移步我的另一篇:《 .NET Core微服务之基于Ocelot实现API网关服务 》。 二、Consul集群搭建 2.1 Consul镜像拉取 docker pull consul:1.4.4   验证:docker images    2.2 Consul Server实例创建   以下我的实践是在一台机器上(CentOS 7)操作的

【Spring Cloud】网关

微笑、不失礼 提交于 2020-08-05 19:42:34
1. 背景 通过 Spring Cloud 和微服务 的学习,我们了解到使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eureka实现了 服务注册中心 以及服务注册与发现;而服务间通过 Ribbon 或Feign实现服务的消费以及均衡负载。为了使得服务集群更为健壮,使用 Hystrix 的熔断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。 在该架构中,服务集群包含:内部服务Service A 和 Service B,他们都会注册与订阅服务至Eureka Server,而Open Service是一个对外的服务,通过均衡负载公开至服务调用方。我们把焦点聚集在对外服务这块,直接暴露我们的服务地址,这样的实现是否合理,或者是否有更好的实现方式呢? 先来说说这样的架构需要做的一些事儿以及存在的不足: • 破坏了服务无状态特点。 为了保证对外服务的安全性,我们需要实现对服务访问的权限控制,而开放服务的权限控制机制将会贯穿并污染整个开放服务的业务逻辑,这会带来的最直接问题是,破坏了服务集群中REST API无状态的特点。 从具体开发和测试的角度来说,在工作中除了要考虑实际的业务逻辑之外,还需要额外考虑对接口访问的控制处理。 • 无法直接复用既有接口。 当我们需要对一个即有的集群内访问接口,实现外部服务访问时

网关是什么?

╄→гoц情女王★ 提交于 2020-08-04 16:16:12
http://www.iocoder.cn/Fight/This-article-takes-you-through-the-API-gateway-from-entry-to-abandonment/?self 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/4469285

springcloud8-限流+网关集群搭建

随声附和 提交于 2020-08-04 14:27:33
一、高级篇幅之高并发情况下接口限流特技 1、nginx层限流 2、网关层限流 简介:谷歌guava框架介绍,网关限流使用 package net.xdclass.apigateway.filter; import com.google.common.util.concurrent.RateLimiter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE; /** * 订单限流 */ @Component public class OrderRateLimiterFilter extends ZuulFilter

微服务架构的前世今生(六):微服务架构带来的问题

你。 提交于 2020-07-29 05:32:02
上次讲了微服务的前世今生(五):CAP 原则与 BASE 理论,这次我们再说微服务架构的前世今生(六):微服务架构带来的问题。 一、客户端如何访问服务? 传统的开发方式,所有的服务都是本地的,客户端可以直接调用,现在按功能拆分成独立的服务,客户端如何访问? 后台有 N 个服务,前台就需要管理 N 个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不符合我们拆分的理念,另外,N 个服务的调用也是一个不小的网络开销。还有一般微服务在系统内部,通常是无状态的,用户登录信息和权限管理最好有一个统一的地方维护管理(OAuth2)。 所以,一般在后台 N 个服务和客户端之间一般会一个代理(API Gateway),作用如下: - 提供统一服务入口,聚合接口使得服务对调用者透明,客户端与后端的耦合度降低 - 聚合后台服务,节省流量,提高性能,提升用户体验 - 提供安全、流控、过滤、缓存、计费、监控等 API 管理功能 二、服务之间如何通信? 因为服务都是独立部署的,所以通信也就成了问题,不过好在业界已经有很多成熟的解决方案,比如: **同步通信:** - REST(JAX-RS,Spring Boot) - RPC(Dubbo,Thrift) **异步通信:** - RabbitMQ,Kafka 三、这么多服务如何查找? 在微服务架构中,为了高可用,普遍采用集群方式构建服务