微服务

什么是微服务网关

   微服务网关也称为服务网关或者API网关。服务网关 = 路由转发 + 过滤器,具体如下:

  • 路由转发:接收一切外界请求,转发到后端的微服务上去;
  • 过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

为什么需要服务网关

上述所说的横切功能(以权限校验为例)可以写在三个位置:

  •  每个服务自己实现一遍;
  •  写到一个公共的服务中,然后其他所有服务都依赖这个服务;
  •  写到服务网关的前置过滤器中,所有请求过来进行权限校验。

 第一种,缺点太明显,基本不用;

 第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:

       由于每个服务引入了这个公共服务,那么相当于在每个服务中都引入了相同的权限校验的代码,使得每个服务的dll 大小无故增加了一些;由于每个服务都引入了这个公共服务,那么我们后续升级这个服务可能就比较困难,而且公共服务的功能越多,升级就越难,而且假设我们改变了公共服务中的权限校验的方式,想让所有的服务都去使用新的权限校验方式,我们就需要将之前所有的服务都重新引包,编译部署。

       而服务网关恰好可以解决这样的问题:

       将权限校验的逻辑写在网关的过滤器中,后端服务不需要关注权限校验的代码,所以服务的包中也不会引入权限校验的逻辑,如果想修改权限校验的逻辑,只需要修改网关中的权限校验过滤器即可,而不需要升级所有已存在的微服务。

 

服务网关的路由功能

     服务网关的路由过程也称之为反向代理,请求不会直接发送到目的地,而是通过一个中间件来进行转发,这个中间件可以是Nginx或者Apache,它充当了反向代理的功能,通常反向代理有以下场景:

(1)使静态资源和动态资源分离;

(2)实现AJAX跨越访问;

(3)搭建统一服务网关接口。

 

使用Node.js实现反向代理

  首先加载HTTP Proxy模块,创建一个模块对象httpProxy,随后通过httpProxy对象去创建代理服务器对象proxy,监听proxy对象的error事件并进行错误处理,最后通过调用proxy的web函数去执行反向代理,需要传染req请求对象和res响应对象,并添加一个代理的目的地址。

1.        使用命令安装 HTTP Proxy :

npm  install  http-proxy

 如果按照不成功,添加NODE_PATH变量

C:\Users\Administrator\AppData\Roaming\npm\node_modules

,另外在此文件目录下安装 HTTP Proxy

2.        使用 HTTP Proxy来启动代理服务器,新建一个名为app_proxy.js ,代码如下:

 

var http=require('http');

var httpProxy=require('http-proxy');

var PORT=1234;

//创建带来服务器对象并监听错误事件
var proxy=httpProxy.createProxyServer();
proxy.on('error',function(err,req,res)
{
	res.end();//输出空白响应数据
}
)


var app=http.createServer(function(req,res)
{
	//执行反向代理
	proxy.web(req,res,{
	   target:'http://localhost:8090'
	});
});

app.listen(PORT,function(){
   console.log('server is running at %d',PORT);
 
})

3.        启动是app_proxy.js ,命令如下:

 

使用Apache Bench性能测试

Apache Bench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

Apache Bench安装,首先需要安装Apache服务器,下载地址:https://www.apachelounge.com/download/。具体安装如下:

1.        下载并解压在C盘

注:

如果解压在其他盘,记得修改conf文件夹下的httpd.conf文件里面的路径,换成对应的解压路径。

2.        命令行下进入到apache下面的bin目录,输入

httpd -k install

把apache安装成windows后台服务。

3.        利用ApacheMonitor来启动你的apache

注意:

l  由于apache默认是监听80端口,如果你的电脑iis是启动状态,并且也使用了80端口,apache将无法正常启动,需要先停止iis,另外迅雷也可能会使用80端口,所以也要关闭迅雷。查看80端口是否被占用,命令行下输入:

netstat -aon|findstr "80"

如果80端口已被使用,需要先关闭相关软件,或者修改apache默认的监听端口,打开apache目录下的conf/httpd.conf  搜索   "Listen 80",修改为Listen 8090,保存之后再重新启动apache

4.        使用Apache Bench对上述反向代理做个简单性能测试,模拟1000个用户,每次并发100个请求,具体测试结果如下:

 


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值