EasyProxy,简单易用的tcp代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EasyProxy,简单易用的tcp代理相关的知识,希望对你有一定的参考价值。

参考技术A 最近工作中遇到了 golang 的项目,稍稍对其产生了点兴趣,打算认真学习下,正巧在搭建 mysql 主备环境的时候发现如果用一个代理程序的话自己测试会方便很多(主要还是为了造轮子),于是这个基于golang的 tcp proxy 项目就产生了

结构图如下:

最常见的负载均衡模式,但有几个点需要支持:

github: EasyProxy
欢迎交流~

在这个工程第一版结束后,较为深入的学习了 slice , map , channel , struct , interface 等结构,还玩了下golang的 协程 , 反射 , 多态 等特性,顺带掌握了下其工程化应当注意的 包循环引入 , debug , 打包发布 等问题
总之现在对golang的熟悉程度就不像看书那么虚了~

如还有其他问题,欢迎喜欢 golang 的小伙伴联系我: xsank#foxmmail.com

简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ


背景

在现在的项目中,消息队列的使用比较的频繁,消息队列的种类也较多,如:ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

其中RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。


特性

  • 可伸缩性:集群服务

  • 消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存 

目前是.NET使用率比较高的消息队列;


好用的轮子

其中EasyNetQ是.NET上RabbitMQ的领先客户端API,在NuGet.org上有超过400万次下载。这是一个开放源代码项目。

EasyNetQ是为了提供一个尽可能简洁的适用与RabbitMQ的.NET类库。为了实现这些目标,EasyNetQ提供一种自认为你会在.NET下使用RabbitMQ的视图。为了保持使用灵活性,简单起见,EasyNetQ强制使用了一些简单的约定。包括如下:

  • 消息用 .NET 类型表示

  • 消息通过.NET类型路由


目标

尽可能简化在.NET上使用RabbitMQ的工作。


入门

要连接到RabbitMQ代理...

var bus = RabbitHutch.CreateBus("host=localhost");

要发布消息...

bus.Publish(message);

订阅消息...

bus.Subscribe<MyMessage>("my_subscription_id", msg => Console.WriteLine(msg.Text));

远程过程调用...

var request = new TestRequestMessage {Text = "Hello from the client! "};bus.Request<TestRequestMessage, TestResponseMessage>(request, response => Console.WriteLine("Got response: '{0}'", response.Text));

RPC服务器...

bus.Respond<TestRequestMessage, TestResponseMessage>(request => new TestResponseMessage{ Text = request.Text + " all done!" });


开源地址

更多功能见:

https://github.com/EasyNetQ/EasyNetQ



往期 精彩 回顾














以上是关于EasyProxy,简单易用的tcp代理的主要内容,如果未能解决你的问题,请参考以下文章

[爬虫]一个易用的IP代理池

Requests库:python实现的简单易用的http库

WebSockets 与长轮询与 TCP 可扩展性/易用性

简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ

Nginx实现反向代理负载均衡功能

学习设计模式之代理模式