去中心化 P2P 网络穿透
由于我对一些奇奇怪怪的技术比较感兴趣,就特别想去了解它的原理。
最近看到两个关键词——去中心化,网络穿透。
了解了相关技术我终于明白,为什么当年王欣说:“技术无罪”。
用到这类技术的有:kuaibo (王欣),TeamViewer
简单来说,去中心化之后就是点对点通信。没有服务器作为中介,两个节点直接通信而不通过服务器。
为了更好地理解什么是去中心化网络,先要了解传统的中心化网络。中心化的节点必须是服务器,客户端只能和服务器通信,而不能单独地与另一个客户端直接通信。若客户端想发送信息给另一个客户端,必须通过服务器。在这种模型中,服务器扮演提供服务的角色,而客户端则是被服务的。这样的通信网络,就是传说中的中心化网络。
在去中心化的网络中,实际上是没有客户端和服务器的说法,客户端之间相互地提供服务。客户端之间相互连接,每个客户端同时对外提供相应的服务,同时也使用其他客户端提供的服务。在这种情况下,就没有客户端的说法了,我们可以称它为节点。这样的通信网络,就是传说中的去中心化网络。这种通信网络去除了中心服务器的绝对控制,也提高的网络传输效率,同时中心服务器的压力也变小了。
NAT(Network Address Translation,网络地址映射)是将公网地址映射为子网地址。能够进行映射的网络装置被称为 NAT 路由器。
在子网与外网通信的过程中,子网和公网连接的节点称为路由器。假设子网在19216810网段。路由器的公网IP为1129311432,服务器的公网IP地址为1209324180。当服务器给子网机器发送数据时,实际上是发送到路由器上,路由器能够通过路由器上记录的映射表,将数据映射到子网的机器中;相对的,当子网机器给服务器发送数据时,先将数据发送到路由器,再由路由器发送给服务器。
2019年11月25日,世界互联网组织宣布,最后一个IPv4地址已经分配完毕。现在,我们已经用完了IPv4地址。
在更早之前,由于 IPv4 地址紧缺,提出了NAT理论,通过公网IP地址与端口的组合,映射到子网机器的IP和端口。这样就可以用少量的公网IP来表示更多的子网IP,可以减缓IPv4地址耗尽。
NAT 实现方案有三种:静态转换,动态转换,端口地址映射。
1 静态转换
一个子网IP对应一个公网IP,且配置后不能更改,这并不能节省公网IP。
2 动态转换
公网IP数量大于子网IP数量,公网IP组成一个IP地址池。当子网IP需要转换时,NAT路由器就从地址池中取出一个空闲的公网IP,分配给子网机器,使得子网机器可以和公网进行通信。当数据传输完后,就回收此公网IP到地址池中。
3端口地址映射
通过改变子网机器发送到公网的源端口号(对外的公网IP为路由器的公网IP,修改后的端口号为路由器上的端口号),最大限度地节省IPv4地址。
从NAT功能上做区分,可以将NAT分为四种: 对称NAT , 完全锥形NAT , IP限制锥形NAT , 端口限制锥形NAT 。
在区分之前,必须先明白一点:NAT 会为子网机器的每一个网络进程都分配一个地址和端口,从而能够将子网网络进程与公网地址做映射。
准备一个子网客户端,两台公网服务器。
准备一个子网客户端,两台公网服务器。
准备一个子网客户端,一台公网服务器。
网络穿透,就是能够让公网的机器(多数指的是网关)找到子网的机器。
穿透下图中的两个网关,使得在两个在不同子网下的机器可以相互通信。网络穿透的本质就是一个子网的机器给另一个网关的公网IP地址和端口发送数据,利用其记录的映射表,使得另一个子网的机器可以接收到数据。
举个栗子,子网机器19216813:2341给公网机器180934546:8888发送数据的过程中,在网关(NAT1)会产生一条映射记录。后续其他公网或者子网的机器发送数据到112931356:43891,就可以让子网机器19216813:2341收到数据。
两端的NAT,只要有一方是完全锥形NAT,就可以穿透。
下面以限制锥形NAT(NAT1),穿透对称NAT为例
(均来自网络)
感谢King老师
2020326 23:37 广州
本文分上下两个部分,上半部分主要介绍:
一、什么是性能测试
二、术语
三、性能测试类型
下半部分主要介绍:
四、性能测试流程
五、性能测试执行(三分钟教会你用Jmeter进行性能压测)
六、结果查看及分析
通篇的风格以寓教于乐为主,介绍知识为辅。希望大家能在快乐中学习,在开心中成长。时间仓促,错误纰漏在所难免,还请“大神”不惜指正!
一、什么是性能测试
性能测试 是通过对系统进行性能需求分析,在合理评估的性能测试环境上,通过测试工具模拟正常、峰值、以及异常负载条件对系统各项性能指标进行测试,旨在发现性能缺陷、进行能力验证、验证规划能力和性能调优,并针对测试结果进行分析总结定位的测试过程。( 引自专家测试团队《性能测试白皮书》)
解释
通俗点说,就是使用用各种“酒具”(jmeter、LoadRunner、Power平台)配合着各种“红、白、啤酒”(入参数据+并发数)来让你达到“正常嗨(正常)、非常嗨(峰值)、嗨过头(异常负载)”的状态,并在这期间通过“心电图”(JMC-- Java Mission Control)或者把你放到“提前定制化的座椅”(RSMS、Dolphin)来持续对你进行观察、监控,从而记录下你在不同剂量下的反应。并根据观察结果来分析“红酒您能喝几瓶”、“白酒能喝几瓶”、“啤酒能喝几瓶”(能力验证);强化了身体素质(系统性能优化)之后又能喝几瓶;甚至是规划一下“有蒙古大汉自远方来不亦喝乎”时,你能不能喝翻他(容量规划)等等……,这些过程,就是“性能测试”!
二、术语
在继续介绍性能测试之前,我们有必要先解释一下经常用的一些术语。否则我瞎逼逼半天,您一脸懵逼,大家就真的在尬聊了……
1并发用户数
同一时刻操作某个页面或某个功能的用户数,描述系统能够承受的并发性能。它是一个时间段内发生的事情,它意在表达“并发”的可能性,是压力的一种度量。计算公式:C=nl/t
n : 业务在线的总用户数量
l : 业务产生的平均时间长度
t : 考察的时间段总长度
解释
我们假想出一个很长很长的水泥管道,管道入口处站了1000个高矮胖瘦一致的人,其中有400人想要通过这个管道。每个人走过这个管道平均需要1个小时,前面的人没走完时入口不放行下一组进入,且入口处每天只有8小时可以放行让人进入。那么,这时“预期”的并发用户数就是4001/8=50,也就是说,只有管道宽的可以装下50人并排走,才能在一天之内让400人都通过。
为什么说是“预期”呢?那是因为可能您胆子小,假想的时候没敢想太大,就只想出了一个允许2人通行的小水管。那8小时肯定走不完所有人啊,所以你需要继续想、使劲努力YY出一个巨大的管子(性能优化)!当然,不排除您跟我一样天赋异禀,一开始就构想出能同时并排200人的巨管。这意味着,就并发用户数这一项,您的系统性能指标完爆当前既定业务量。
2响应时间
用户发起请求到响应返回的时间,描述交易执行快慢程度。(计算规则:响应时间=网络传输时间+系统响应时间)
90%Percent:每个事务90%用户的响应时间在该值以下
Minimum:每个事务所有用户中最小的响应时间
Average:每个事务所有用户的响应时间算数平均值
Maximum:每个事务所有用户中最大的响应时间
解释
还是继续走管道……我们给每个人发一个秒表,人们并排进入管道的同时每个人按下秒表。每个人行走的速度不同,虽然是并排进入,但并不是一同出来。每一个人走出管道的同时,再次按下秒表……这时,秒表记录的时间就是这个人(请求)开始到结束的响应时间。
90%Percent:我们把同时走管道的一波人看做一个队伍,队伍中90%的人是在这个时间以内就走出了管道;
Minimum:走的最快的那个人所用的时间;
Average:所有人花费时间的平均值(在这个例子中为1小时);
Maximum:走的最慢的那个人所用的时间。
3TPS
指每秒处理的事务数,TPS=总事务数/总的时间,描述了服务器的处理能力。
解释
一句话,就是每秒钟通过管道的人。这里肯定有人觉得这个概念看着眼熟,很像最开始的并发用户数,对么?仔细看一下他们的区别:并发用户数是指同时进入管道的“肩并肩”的人,吞吐量是指每秒钟那些肩并肩进入管道的人中,平均多少人走了出来。所以,在这里“TPS = 并发数/平均响应时间”
4二八法则
80%的业务请求在20%的业务时间里面产生。
如:信用卡客服系统中"客户信息查询功能”年使用量为4800万次,系统服务时间为724小时。每秒请求数:
4800000080%/36524360020%=38400000/6307200=6次/秒
解释
这个有毛用呢?试想一下,如果我们要压这个信用卡客服系统,是不是真的需要724小时不停压一年凑够4800万个请求呢?用脚趾头也能想明白,肯定不用啊!那如何在减少工作量的情况下尽可能的模拟真实场景呢?这个时候二八法则就出场了!(别问我为什么不是三七、四六、五五法则,你当是在分赃吗?)
5 2-5-8原则
WEB系统性能测试中的2-5-8原则描述如下:
用户在2秒以内得到响应时,系统的响应很快,用户对系统的体验较优;
用户在2-5秒之间得到响应时,系统的响应速度还可以,用户对系统的体验一般;
用户在5-8秒以内得到响应时,系统的响应速度较慢但还在接受范围,用户对系统的体验较慢;
用户在超过8秒后仍然无法得到响应时,通常会认为系统已经失去响应,选择离开或者发起第二次请求,用户对系统的体验很糟糕。
翻译
这个没啥好解释的,就是个“业界”非标准化的一个标准……所以,以后在项目中没有明确要求某功能or页面的响应时间时,就拿这个当标准来考量吧!另外需要补充的一点是,我们用jmeter一般是压接口,我们得出的响应时间一般会小于直接压页面,为什么呢?这里影响响应时间的除了网络传输时间+系统响应时间,还有个前端页面渲染的时间。所以如果我们想web用户体验较好(3秒内),压接口的响应时间最好就要低于3秒,这给页面渲染留出一定的冗余时间。
三、性能测试类型
终于要开始介绍性能测试的干货(Fuck foods)了。
1、基准测试
测试系统是否存在线程安全性问题,并得到一定测试条件下的系统的性能基线数据。目的是得到系统的性能基线数据,并对响应时间、TPS和其他与时间相关的需求进行评估。
翻译
俗话说的好,“凡事都有个第一次,再丑的媳妇也要见公婆”。这个类型就是针对之前没有做过性能测试,或者是根据新需求而刚刚开发完成的新系统来说的。这时,您就需要来一份“基准测试”啦!先给自己留个底儿,有了性能基线,我们才能继续后面的“调优”不是?
对比测试
对比不同测试条件下的性能差距,常用于系统优化,技术选型,通过相同的用例对比性能数据。测试方式和负载测试类似。
翻译
多说无益,我们“举几个比方,打几个栗子”:
我们对系统的某功能进行了优化,需要验证该功能在优化前后的性能对比数据时,可以进行对比测试;
老板让我说出两种系统架构或者实现方法下,哪一种更好,可以进行对比测试;
老板让我说出这两款设备,哪一款更优秀,可以进行对比测试。
说白了,就是各种比较,没有对比就没有伤害;不对比你怎么能知道你有多胖呢,对不对?!(观众:扔砖头!!!)
2、容量规划
测试系统在软硬件上的扩展能力,常用于测试软件扩容,硬件扩容。容量规划也是对比测试的一种。
翻译
就如定义中所说,容量规划也是对比测试的一种。这个类型主要使用场景有:
软件扩容:我们用多线程来代替原有的单线程处理请求;
硬件扩容:我们增加了两台redis,加大了weblogic server的内存或者直接增加了4台服务器。
在这里也要额外说一点:我们扩容,特别是硬件扩容,是不能按照倍数来放大扩容效果的。例如,我们2台server时TPS为100,我们增加到4台同样配置的server时,TPS并不是增加到200了。有可能是160、170、180……这其中并没有一个线性的关系,这点很重要需要知悉。所以,很多时候项目组找到我们做性能测试,说我们生产环境与测试环境配置相同,只是数量不同,是否能直接换算性能指标呢?答案是否定的!我们只能说,你在测试环境中如果满足了预期性能指标,那生产环境理论上是没有问题的,no more!
3、稳定性测试
采用系统稳定运行情况下能够支持的最大并发用户数,或者日常运行用户数,持续运行一段时间。目标是检测系统能否持续稳定工作。
解释
其实,我们在用Jmeter压测的时候,至少都要持续10~15min以上,为什么呢?我们要让TPS稳定下来,这时采集的数据才有效;当然,并不是说15分钟就一定够了,某些情况下需要更长时间的压测才能发现性能问题。
稳定性测试多用于对“系统稳定性”有“强需求”的系统,比如金融类的银行、证券等等。如系统要求324小时运行,测试当系统在一定的压力情况下(如CPU资源使用率维持在50%左右),选取复合场景的案例,持续运行3x24小时,观测系统的稳定性状态数据。
还有一种是:测试人员发现,系统在短时间(1个小时、8个小时甚至1天)内都是正常的,但一超过一定时间后就会CPU利用率徒增,或者内存持续增高(疑似内存泄露),这也需要来一场轰轰烈烈的稳定性测试……
4、负载测试
负载测试是通过逐渐增加用户量来观察在不同的负载下系统的指标,以检验系统的行为和特性,以发现系统可能存在的性能问题,并可以检测系统的伸缩性。
也可以确定在什么负载条件下系统性能处于失效状态,目标是获得系统能提供的最大服务级别。
解释
负载测试是大家平时做性能测试使用最多的一种类型,甚至有些时候大家嘴里所说的性能测试,就是指的负载测试。说的直白点,就是你写好脚本跑个100并发,发现对于系统来说“洒洒水啦”,监控显示内存和CPU指标都懒得波动一下。那我们加到400试试,加到500呢,1000……?所以,这就是一个“试”的过程,直到系统“失效”!这里的“失效”不一定是指系统宕机,监控显示CPU、Memory利用率超过80%了也叫失效,系统响应时间超过预期的3秒了也叫失效,就看哪个条件先被打破了……
以系统形式报验
子目 847149 所称“系统”,是指各部件符合第八十四章注释六(三)所列条件,并且至少由一个中央处理部件、一个输入部件(例如,键盘或扫描器)及一个输出部件(例如,视频显示器或打印机)组成的自动数据处理设备。
六、(三)除本条注释(四)及(五)另有规定的以外,一个部件如果符合下列所有规定,即可视为自动数据处理系统的一部分:
1.专用于或主要用于自动数据处理系统;
2.可以直接或通过一个或几个其他部件同中央处理器相联接;以及
3.能够以本系统所使用的方式(代码或信号)接收或传送数据。
举个栗子:进口一套电脑,含主机+显示器+键盘+鼠标=以系统形式报验;进口一台主机:非以系统形式报验
nettcplisten用来监控端口是否有程序运行,比如我们网站部署到80端口,listen就可以判断是否运行
nettcpport用来监控端口是否开放,比如我们设置防火墙或者是在阿里云服务器安全组内关闭80端口就会报警
因为你们位面不同啊
举个栗子 你们俩都在做一个任务,这个任务交了会有一段动画,你交了任务但是他不交,那么你可以在动画里看到自己跟着NPC到处跑啊或者战斗什么的,而他因为没交任务而看不到 这时你们俩处于不同的位面,就好比同一个副本但你们俩在不同的队伍里是看不到对面的 位面你可以理解成副本,你们俩没在一个本里!
请用notepad软件打开
前提是你有这个插件
plugins\Essentials\configyml
找到这条announce-format: '&d欢迎新玩家{DISPLAYNAME}来到服务器!'
然后就随你爱好改
举个栗子:announce-format: '&d欢迎新玩家{DISPLAYNAME}来到百度贴吧服务器!'
如果您需要开放内网服务器,,使用DMZ主机即可。举个栗子,内网有一台共享资源的服务器,为外网用户提供资源,您可以设置DMZ主机将该服务器开放给外网。下面是我给大家整理的一些有关tp link路由器设置dmz主机的 方法 ,希望对大家有帮助!
tp link路由器设置dmz主机的方法
DMZ主机如下:
登录路由器管理界面,点击 设备管理,进入管理设置页面,如下图:
找到 DMZ主机,点击 进入。
点击 开 ,在DMZ主机IP地址处填写服务器IP地址,点击 保存,如下:
服务器的IP地址,您可以在电脑的本地网卡处查看,也可以从已连设备中选择。
至此,DMZ主机设置完成。
外网访问服务器共享的资源,需要使用路由器WAN口的IP地址。在 路由设置 >>网络参数 中查看,如下:
访问资源时,只需访问WAN口IP地址即可,如下:
设置完成后,DMZ主机访问不了
请排查以下方面:
1、确认服务器搭建成功,即内网可以正常访问;
2、确认在DMZ主机中填写的服务器IP地址正确;
3、宽带直接连接服务器并配置上网,确认外网可以正常访问;
4、尝试关闭服务器防火墙。
0条评论