自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(220)
  • 收藏
  • 关注

转载 BeetleX之FastHttpApi服务使用详解

BeetleX是开个轻量级高性能的开源TCP通讯应用框架,通过BeetleX可以轻松扩展不同场的TCP应用服务和客户端组件。框架开源地址:https://github.com/IKende/BeetleX组件特点高性能TCP通讯组件,轻易实现百万级RPS通讯交互提供完善的会话管理机制和协议分析规则提供简洁的扩展结构,轻易实现http,websocket,mqtt等应...

2019-09-18 15:05:00 975

转载 CodeBenchmark之压力测试详解

CodeBenchmark是一款高性能可视化的并发测试组件,通过组件可以对任意逻辑代码或服务进行并发测试;组件最终通过可视化的方式来显示测试结果,在测试结果中可以看到具体的并发情况和处理延时的分布。组件不仅可以对单个逻辑或服务进行并发测试,还可以同时对多个逻辑代码用例进行不同并发分组压测,最终显示它们之间的性能差异和不同并发下的最优结果。接下来介绍如何使用这一组件对逻辑代码或服务进行并发...

2019-09-11 10:07:00 411

转载 dotnet core各rpc组件的性能测试

一般rpc通讯组件都具有高性特性,因为大部分rpc都是基于二进制和连接复用的特点,相对于HTTP(2.0以下的版本)来说有着很大的性能优势,非常适合服务间通讯交互。本文针对了dotnet core平台上的一些rpc组件进行性能测试,主要包括grpc,Orleans,xrpc和netx;其实平台下的rcp组件有很多,毕竟个人精力有限并没有一一添加到测试里面去;如果大家有兴趣可以参与进来ht...

2019-09-03 10:04:00 436

转载 使用CodeBenchmark对逻辑代码进行并发测试

一直对性能测试比较感兴趣,所以也写了不少的测试工具有WebApiBenchmark和TcpBenchmark等;但这些工具测试都是有针对性和配置的方式来进行功能有限所以很难适用更多的场景,所以单独开发一个组件CodeBenchmark来解决不同业务代码下的性能测试;严格来说CodeBenchmark并不算一个完整的测试工具,它提供一个测试管理功能和测试环境,可以对实现某一规则业务代码进行...

2019-08-28 11:56:00 250

转载 让techempower帮你通讯服务框架的性能

在编写服务应用框架的时候一般都需要进行性能测试,但自己测试毕竟资源受限所以很难做更高性能上的测试。其实GitHub上有一个项目可以让开发人员提交自己的框架服务代码然后进行一个标准测试;现在已经有上百个框架提交了相关测试代码,包括netty(java),aspcore(.netcore)和swoole(php)等等(对.net core来说有些少,暂只有ms提供的aspcore-kestr...

2019-08-08 11:13:00 184

转载 .Net core使用XRPC创建远程接口的Actor对象

Actor是一种高并发处理模型,每个Actor都有着自己的状态有序消息处理机制,所以在业务处理的情况并不需要制定锁的机制,从而达到更高效的处理能性。XRPC是一个基于远程接口调用的RPC组件,它可以简单地实现高性能的远程接口调用;XRPC在创建远程接口时是支持针对接口创建对应的Actor实例。当创建接口Actor后,所有Client针对这一例实例Actor的所有方法调用都是有序处理。以下...

2019-05-29 09:26:00 166

转载 使用EventNext实现基于事件驱动的业务处理

事件驱动模型相信对大家来说并不陌生,因为这是一套非常高效的逻辑处理模型,通过事件来驱动接下来需要完成的工作,而不像传统同步模型等待任务完成后再继续!虽然事件驱动有着这样的好处,但在传统设计上基于消息回调的处理方式在业务处理中相对比较麻烦整体设计成本也比较高,所以落地也不容易。EventNext是一个事件驱动的应用框架,它的事件驱动支持接口调用,在一系列的业务接口调用过程中通过事件驱动调用...

2019-05-24 22:50:00 209

转载 .net core 高吞吐远程方法调用组件XRPC

XRPC的目标非常明确,就是给.net core平台实现一个百万级别的远程方法调用RPC通讯组件。它的设计理念和GRPC一样,基于连接复用的机制实现高吞的性能;XRPC采用了HTTP2复用的思想,在协议设计上也类似文本和二进制相结合;在应用层面并没使用消息而是基于接口代理的方式让使用更简便。协议序列化XRPC采用了基于文本+二进制相结合的通讯协议,头以文本的方式表现主要是描述请求...

2019-05-19 08:09:00 185

转载 .net core百万设备连接服务和硬件需求测试

随着物联网的普及,服务应用将面对大量物联设备处理;早期.NET在通讯上的处理能力一直给人的印像并不怎样,但net core经历过大量的优化后在各个模块的处理性能都有着比较出色的提升,针对网络方向的处理模块也有着显著的提升。以下主要测试.net core在不同连接数据并发下的资源吏用情况,用于评估在不同数量连接上服务的处理能力和硬件配置的需求。测试描述分别以200,10万,50万,...

2019-05-10 19:52:00 119

转载 使用BeetleX的TcpBenchmark工具进行百万设备模拟测试

其实TCP测试的工具有很多,那BeetleX工具所提供的特点又是什么呢?如果你需数十万的请求或模拟上百万的设备连接,那这个工具相信可以满足你的需要!工具是基于BeetleX的基础功能扩展,支持多IP绑定可以轻松实现上百万的client模拟;在性能上工具可以在一台4核的PC可达到数十万的Socket读写效能足以满足模拟大并发请求处理的需求。以下介绍这个工具的部署和使用下载工具下载地...

2019-04-28 08:29:00 173

转载 BeetleX快速构建多平台的TCP和SSL TCP应用

对于普通开发者而言编写TCP应用通讯是一件相对复杂的工作,毕竟需要一系列的bytes操作;如果再针对SSL的安全性处理相信会把很多普通开发者拒之门外.为了简化这一问题BeetleX引入了Stream操作模式并提供PipiStream操作对象让开发者在TCP流操作上变得非常简便;由于PipiStream​是基本saea扩展的流操作模型,因此在提供简便操作的同时还能提供出色的性能。以下介绍如...

2019-04-22 11:00:00 297

转载 Winform/WPF中内嵌BeetleX的HTTP服务

在新版本的BeetleX.FastHttpApi加入了对netstandard2.0支持,如果程序基于.NetFramework4.6.1来构建WinForm或WPF桌面程序的情况下可以直接把BeetleX的HTTP嵌入到程序中,轻易就能实现一个本地化的HTTP服务并提供静态资源和WebAPI的调用处理;以下简单地介绍在WinForm/WPF引入BeetleX.FastHttpApi的H...

2019-04-19 10:05:00 279

转载 .net core 在网络高并发下提高JSON的处理效率

现有的webapi一般都基于JSON的格式来处理数据,由于JSON是一个文本类的序列化协议所以在性能上自然就相对低效一些。在.net中常用Newtonsoft.Json是最常用的组件,由于提供简便基于完整的json的String方法使用起来非常方便;但也正是这原因导致Newtonsoft.Json在性能上一直被说慢,虽然Newtonsoft.Json提供Stream的方式来处理JSON不...

2019-04-11 13:18:00 903

转载 基于async/non-blocking高性能redis组件库BeetleX.Redis

BeetleX.Redis是基于async/non-blocking模式实现的高性能redis组件库,组件支持redis基础指令集,并封装更简便的List,Hashset和Subscribe操作。除了在基础操作功能上,组件还提供多服务备份方式和多连接池机制,从而让组件提供高可用和高性能的访问方案;在数据格式上组件默认集成了json和protobuf可以根据自己的需求来选择相应的存储格式。...

2019-04-01 22:09:00 142

转载 开箱即用Bumblebee独立部署搭建webapi网关详解

在之前的章节里都是讲述如何在程序中使用Bumblebee来构建一个Webapi网关;但这样显然有些麻烦,毕竟很多时候可能只需要一个简单负载处理,还需要写个程序针对服务进行编写代码或配置的确是比较麻烦的事情;如果有负载方面的调整还需要重新编译部署这的确是很让人头痛的事情!为了解决这一问题这些时间针对Bumblebee写了个简单的web管理插件并编写一个服务集成进去,只需要简单地部署即可把网...

2019-03-22 13:13:00 187

转载 Bumblebee之负载、限流和故障处理实践

Bumblebee作为标准HTTP 1.1应用协议的网关,它能作为任何基于HTTP 1.1构建Webapi服务的前置网关。以下通过示例讲述如何用Bumblebee来制作一个asp.net core webapi的前置网关,并演示网关的一些基础功能如:负载,限流和故障迁移等相关基础功能。网关定义Bumblebee定义网关非常简便,只需要Nuget引用BeetleX.Bumblebe...

2019-03-19 10:13:00 234

转载 BeetleX和Asp.net Core之webapi基础性能对比

本文主要针对BeetleX和Asp.net Core在基础WebApi功能性能对比测试环境描述硬件配置:E1230V2 16G内存 10Gb带宽操作系统:Windows server 2008 R2 + .Net Core 2.15测试工具:bombardier.exe测试功能代码为了确保测试的基础功能一致性,因此所有测试的url和请求输出内容都是一致...

2019-03-09 19:22:00 185

转载 WebApi管理和性能测试工具WebApiBenchmarks

说到WebApi管理和测试工具其实已经非常多的了,Postman、Swagger等在管理和维护上都非常出色;在性能测试方面也有不少的工具如:wrk,bombardier,http_load和ab等等。不过这些工具都具有单一性,管理和维护好的在性能测试上比较低效,对于性能测试好的在管理和维护上不理想!以下主要介绍一款基于dotnet core开发的WebApiBenchmarks工具,这个...

2019-03-09 14:03:00 104

转载 设计一个可靠的连接池

在应用中连接池的使用非常普遍,如访问数据库,Redis等等网络产品的Client都集成了连接池机制;由于最近在编写微服务网关因此涉及到连接池的编写,在这里分享一下实现一个可靠连接池的心得。其实编写一个连接池并不因难,基础的Stack结构就能满足需要;但在设计的时候有些情况是需要考虑的,怎样使连接池的效益最大化,特别是如何设计连接池的最大负载,当超过最大负载后应该怎么做这些问题都衡量一个连...

2019-03-03 10:33:00 116

转载 BeetleX之WebSocket详解

对于BeetleX来说编写WebSocket服务是一件非常简单的事情,当你实现一个Web Api应用的同时这些API方法也是WebSocket服务方法。接下来主要讲解如何通过JavaScript调用BeetleX的WebSocket服务方法或定义一个适合自己数据格式的WebSocket服务。引用组件通过Nuget引用最新版本的BeetleX.FastHttpApi或通过下载源码编...

2019-02-27 19:38:00 245

转载 Bumblebee微服务网关的部署和扩展

Bumblebee是.netcore下开源基于BeetleX.FastHttpApi扩展的HTTP微服务网关组件,它的主要作用是针对WebAPI集群服务作一个集中的转发和管理;作为应用网关它提供了应用服务负载,故障迁移,安全控制,监控跟踪和日志处理等。它最大的一个特点是基于C#开发,你可以针对自己业务的需要对它进行扩展具体的业务功能。组件部署组件的部署一般根据自己的需要进行引用扩...

2019-02-22 10:47:00 196

转载 .net core自定义高性能的Web API服务网关

网关对于服务起到一个统一控制处理的作用,也便于客户端更好的调用;通过网关可以灵活地控制服务应用接口负载,故障迁移,安全控制,监控跟踪和日志处理等。由于网关在性能和可靠性上都要求非常严格,所以针对业务需求来制定一个服务网关需要花费比较大的成本。以下介绍一下Bumblebee基础Web API网关组件,通过它可以灵活扩展更适合业务需求的应用接口网关服务。简介Bumblebee是基于B...

2019-02-15 11:24:00 260

转载 .net core下简单构建高可用服务集群

一说到集群服务相信对普通开发者来说肯定想到很复杂的事情,如zeekeeper ,反向代理服务网关等一系列的搭建和配置等等;总得来说需要有一定经验和规划的团队才能应用起来。在这文章里你能看到在.net core下的另一种集群构建方案,通过Beetlex即可非常便捷地构建高可用的集群服务。简述Beetlex的Webapi集群应用并没有依赖于第三方服务,而是由Beetlex自身完成;它...

2019-01-11 10:19:00 71

转载 dotnet core开源博客系统XBlog介绍

XBlog是dotnet core平台下的个人博客开源系统,它只需要通过Copy的方式即可以部署到Linux和windows系统中;如果你有安全证书那只需要简单配置一下即可提供安全的Https服务。接下来主要介绍XBlog功能、部署和基础设置。技术要点基于dotnet core平台,可以运行在windows和linux系统上完全基于BeetleX.FastHttpAp框架...

2018-12-28 15:47:00 124

转载 BeetleX之HttpClusterApi应用详解

之前的文章已经介绍过如何使用HttpClusterApi进行去中心化的HTTP集群服务访问,这一章主要详细讲述如何使用HttpClusterApi,主要包括如何定义节点,创建服务接口和使用接口描述不同情况下的WebApi服务。最后通过HttpClusterApi简便地调用百度的一些云服务接口。介绍通过名称大概也能了解它的功能,通过它可以描述和调用不同的webapi服务应用;它提供...

2018-12-27 10:09:00 71

转载 BeetleX之HttpClusterApi应用详解

之前的文章已经介绍过如何使用HttpClusterApi进行去中心化的HTTP集群服务访问,这一章主要详细讲述如何使用HttpClusterApi,主要包括如果定义节点,创建服务接口和如果使用接口描述不同情况下的WebApi服务。最后简单地通过HttpClusterApi来调用百度的一些云服务接口。介绍通过名称大概也能了解它的功能,通过它可以描述和调用不同的webapi服务应用;...

2018-12-25 09:39:00 166

转载 async/await使用深入详解

async和await作为异步模型代码编写的语法糖已经提供了一段时间不过一直没怎么用,由于最近需要在BeetleX webapi中集成对Task方法的支持,所以对async和await有了深入的了解和实践应用.在这总结一下async和await的使用,主要涉及到:自定义Awaitable,在传统异步方法中集成Task,异常处理等.介绍在传统异步方法处理都是通过指定回调函数的方式来...

2018-12-22 08:46:00 222

转载 尴尬的事情又发生Newtonsoft.Json vs Protobuf.net

写程序做下性能测试都是例行的事情了,一般在普通电脑上测试一下如果比较理想那基本不出什么意外!但世事难料,代码写得不好经常担心CPU不够用,其实写得好但不能完全发挥出CPU资源的优势更是一件悲剧的事情!这次事件已经发生了两回,其实还真的很折磨人的。话不多说回到今天的正题Newtonsoft.JsonvsProtobuf.net,对于两者的性能我相信大部分人会站在Protobuf.net...

2018-12-17 14:59:00 137

转载 在dotnet core下去中心化访问HTTP服务集群

一般应用服务都会部署到多台服务器之上,一、可以通过硬件得到更多的并发处理能力;二、可以避免单点太故障的出现,从而确保服务7X24有效运作。当访问这些HTTP服务的情况一般都是经过反向代理服务进行统一处理,这样的好处就访问透明化,统一管理和控制。但存在的问题就是服务处理延时加大,还有就是对小团或公司来说可能没有专门的技术人来规划和管理这些代理服务。接下一来讲一下在.net core下更轻更...

2018-12-13 16:52:00 157

转载 .netcore使用SocketAsyncEventArgs Pool需要注意!

在.net中做网络通讯往往都会用到SocketAsyncEventArgs,为了得到更好的性能配合Pool复用SocketAsyncEventArgs可以得到一个更好的效果,但在dotnet core在linux下这一块的处理好像存在严重的问题!经过多天的测试,终于在Linux下Debug到这一情况,实时调试输出接收的数据并不是当前请求的数据,而是之前另一请求的数据…… 接下来一下问题的...

2018-12-05 10:50:00 256

转载 Kestrel.Transport.Sockets分析与使用

相信大家都清楚asp core有着非常出色的性能,它出色的性能也源于网络服务模块Kestrel;在techempower测试中Kestrel基础核心达到了700万级别的RPS吞吐能力,具备这样的能力那对应的Kestrel.Transport.Sockets也应有着不错的性能。接下来简单地分析一下Kestrel.Transport.Sockets的设计和使用,并进行简单的并发处理能力测试。...

2018-11-26 09:26:00 306

转载 .net core使用RPC方式进行高效的HTTP服务访问

传统的HTTP接口调用是一件比较繁琐的事情,特别是在Post数据的时候;不仅要拼访问的URL还是把数据序列化成流的方式给Request进行提交,获取Respons后还要对流进行解码。在实际应用虽然可以对HttpClient进行一个简单的封装,一旦到了上层大量的API调用还是不方便和不好维护。但如果在不改变HTTP接口服务的情况可以通过RPC的方式来调用HTTP服务那在使用和修改上都会变得...

2018-11-19 15:04:00 391

转载 通过LRU实现通用高效的超时连接探测

编写网络通讯都要面对一个问题,就是要把很久不存活的死连接清除,如果不这样做那死连接最终会占用大量内存影响服务运作!在实现过程中一般都会使用ping,pong原理,通过ping,pong来更新连接的时效性,最后通过扫描连接列表来清除掉。虽然这种做法比较简单,但很难抽取出通用性的封装,扫描整个列表复杂度也比较高。以下讲解如何通过LRU算法实现一个通用高效的探测超时连接功能类。什么是LRU...

2018-11-13 10:20:00 88

转载 .net core使用Pipelines进行消息IO合并

之前的文章讲述过通过IO合并实现百万级RPS和千万级消息推送,但这两篇文章只是简单地讲了一下原理和测试结果并没有在代码实现上的讲解,这一编文章主要通过代码的实现来讲述消息IO合并的原理。其实在早期的版本实现IO合并还是比较因难的,需要大量的代码和测试Beetlex是完全自己实现这套机制。不过这一章就不是从Beetlex的实现来讲解,因为MS已经提供了一个新东西给以支持,那就是System...

2018-11-08 10:03:00 225

转载 .net core 使用ConcurrentTest组件对方法进行压力测试

工欲善其事,必先利其器!在编写服务中首先要有一个好的测试工具,在dontecore下性能测试有BenchmarkDotNet,只需要简单的配置一下就可以对方法的性能进行详细的测试。但有时候需要对不同并发下看其处理效率和延时统计查看,如HTTP服务对应着大量的测试工具如ab,bombardier等等。由于找不到类似于测试HTTP服务的工具来测试代码用例,于时就有了ConcurrentTes...

2018-11-06 09:38:00 171

转载 服务测试碰钉子Server GC

如果发现你的dotnet core服务并发上不去,但cpu资源还比较充足那就要注意了!因为这很有可能是你没有设置一个运行项导致...,下面要提到的就是GC.Server这玩意,实际上项目编译中并没有这一项设置,通过app.config设置也无效。那到底这是一个什么东西接下来说一下实际的应用效果和配置方式。原因最近一直做在做FastHttpApi方面的性能测试,在本机测试性能一直都...

2018-11-03 09:26:00 145

转载 dotnet core使用IO合并技巧轻松实现千万级消息推送

之前讲述过多路复用实现单服百万级别RPS吞吐,但在文中有一点是没有说的就是消息IO合并,如果缺少了消息IO合并即使怎样多路复用也很难达到百万级别的请求响毕竟所有应用层面的网络IO读写都是非常损耗性能的(需要硬件配置很高的服务器)。这一章主要讲述的是IO合并的应用,并通过这个特性实现普通单服务千万级别的消息推送测试。什么是消息IO合并所谓的消息IO合并即是由原来一个消息对应一个网络...

2018-10-29 10:54:00 110

转载 .net core通过多路复用实现单服务百万级别RPS吞吐

多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理。对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输;由于上层应用协议的制订问题,导致了很多传统服务并不能支持多路复用;如:http1.1,sqlserver和redis等等,虽然有些服务提供批量处理,但这些处理都基于一个RPS下。下面通过图解来了解释单路和多路复用的区别。单路存在...

2018-10-23 13:24:00 351

转载 .net core下使用FastHttpApi构建web聊天室

一般在dotnet core下构建使用web服务应用都使用asp.net core,但通过FastHttpApi组建也可以方便地构建web服务应用,在FastHttpApi功能的支持下构建多人聊天室是件非常简单的事情,通过组件并不需要了解WebSocket知识即可简单构建,以下讲解一下通过FastHttpApi如何构建一个简单的多人聊室。创建项目使用FastHttpApi构建一个...

2018-10-19 16:31:00 94

转载 传统HTML页面实现模块化加载

对于网站来说很多页面之间都有着大量的共享模块,如页头,页脚和用户栏等。对于具备后端视图引擎的框架来说这些共享都比较容易抽取,如asp.net mvc来说就有统一布局的MasterPage,@Section等功能可以共享视图模板功能。但对于HTML就没这么幸运了,在html文件里并不具备这些功能,所以当你用纯HTML页面来写应用网站的时候估计不得不面对这些重复的工作,虽然可以通过嵌套IFr...

2018-10-15 10:06:00 229

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除