优秀的国产高性能TCPUDPHTTP开源网络通信框架——HP-Socket

优秀的国产高性能TCPUDPHTTP开源网络通信框架——HP-Socket,第1张

HP-Socket是国人开发的一套高性能的TCP/UDP/HTTP网络通信框架,包含了服务端、客户端以及Agent组件,可用于各种不同应用场景的通信系统,并且提供了C/C++、C#、Delphi、E、Java、Python等编程语言接口。 HP-Socket 对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思 想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前支持 Windows 和 Linux 平台。

以下来自官网提供的文档:

应用程序可以根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的 各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源 配置,在满足应用需求的同时不必过度浪费资源。

提供官方文档的目录截图,由于文档非常详细,就不一一介绍了

下面是一张官方提供的demo项目结构,除了C/C++,还提供了C#、Delphi、E,详细的内容都在github的仓库中,感兴趣的可以去看看。

HP-Socket凭借着通用性、易用性、高性能、伸缩性可以应用到各种场景,而且官方提供了大量的Demo可供学习,以及非常详细的PDF文档,除了支持主流的编程语言,还支持E(易语言)。如果你有更好的推荐或者建议欢迎到评论区留言分享!

TCP/IP只是个协议,随便一本讲网络的书都会讲到这个架构。代码实现则有很多,Unix,linux,windows,mac等等太多了,代码肯定不一样。linux基于GNU的GPL协议,所以源代码都是开放的,可以随便看、修改。

Nginx是比较不错的开源Web服务器之一,但它也可以用作TCP和UDP负载均衡器。使用Nginx作为HAProxy的负载均衡器的主要好处之一是,它还可以负载均衡基于UDP的流量。在本文中,我们将演示如何将NGINX配置为Kubernetes集群中部署的应用程序的负载均衡。

假设Kubernetes集群已经配置好,我们将基于 CentOS 为Nginx创建一个虚拟机。

以下是实验种设置的详细信息:

Nginx (CenOS8 Minimal) - 192.168.1.50

Kube Master - 192.168.1.40

Kube Worker 1 - 192.168.1.41

Kube Worker 2 - 192.168.1.42

步骤1)安装epel仓库

因为nginx软件包在CentOS系统默认仓库里面没有,所以需要安装epel仓库:

[root@nginxlb ~]# dnf install epel-release -y

步骤2)安装Nginx

运行以下 命令 安装nginx:

[root@nginxlb ~]# dnf install nginx -y

使用rpm 命令 验证Nginx包的详细信息:

[root@nginxlb ~]# rpm -qi nginx

配置防火墙,允许访问nginx的http和https服务:

[root@nginxlb ~]# firewall-cmd --permanent --add-service=http

[root@nginxlb ~]# firewall-cmd --permanent --add-service=https

[root@nginxlb ~]# firewall-cmd –reload

使用以下命令将SE Linux 设置为permissive模式,并重启系统使selinux关闭生效:

[root@nginxlb ~]# sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config

[root@nginxlb ~]# reboot

步骤3)从Kubernetes中获取应用程序的NodePort详细信息

[kadmin@k8s-master ~]$  kubectl get all -n ingress-nginx

从上面的输出中可以看到,每个工作节点的NodePort 32760映射到端口80,NodePort 32375映射到443端口。我们将在Nginx配置文件中使用这些节点端口来做负载均衡。

步骤4)将Nginx配置负载均衡

编辑nginx配置文件,并添加以下内容:

[root@nginxlb ~]# vim /etc/nginx/nginx.conf

注释掉“server”部分(从38到57行):

并添加以下几行:

upstream backend {

  server 192.168.1.41:32760

  server 192.168.1.42:32760

}

server {

  listen 80

  location / {

      proxy_read_timeout 1800

      proxy_connect_timeout 1800

      proxy_send_timeout 1800

      send_timeout 1800

      proxy_set_header        Accept-Encoding  ""

      proxy_set_header        X-Forwarded-By    $server_addr:$server_port

      proxy_set_header        X-Forwarded-For  $remote_addr

      proxy_set_header        X-Forwarded-Proto $scheme

      proxy_set_header Host $host

      proxy_set_header X-Real-IP $remote_addr

      proxy_pass http://backend

  }

    location /nginx_status {

        stub_status

    }

}

保存配置文件,并退出。

根据上述更改,所有向nginx的80端口的请求,都将被路由到的Kubernetes工作节点(192.168.1.41和192.168.1.42)的NodePort(32760)端口上。

使用以下命令启用Nginx服务:

[root@nginxlb ~]# systemctl start nginx

[root@nginxlb ~]# systemctl enable nginx

测试Nginx的 TCP负载均衡器

要测试nginx作为Kubernetes的TCP负载均衡是否工作正常,请部署基于nginx的deployment,将deployment的端口暴露为80端口,并为nginx 的deployment定义入口资源。我已经使用以下命令来部署这些Kubernetes对象:

[kadmin@k8s-master ~]$ kubectl create deployment nginx-deployment --image=nginx

deployment.apps/nginx-deployment created

[kadmin@k8s-master ~]$ kubectl expose deployments nginx-deployment  --name=nginx-deployment --type=NodePort --port=80

service/nginx-deployment exposed

运行以下命令以获取deployments,svc和ingress详细信息:

更新本地主机的hosts文件,以便nginx-lb.example.com指向nginx服务器的IP地址(192.168.1.50)

[root@localhost ~]# echo "192.168.1.50  nginx-lb.example.com" >>/etc/hosts

尝试通过浏览器访问nginx-lb.example.com

总结

上面证实了Nginx作为TCP负载均衡器可以正常工作,因为它可以负载平衡K8s工作节点之间端口80上的TCP通信量。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/296611.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-25
下一篇2023-04-25

发表评论

登录后才能评论

评论列表(0条)

    保存