日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

wcf高并发 mysql_使用nginx搭建高可用,高并发的wcf集群

發布時間:2025/3/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wcf高并发 mysql_使用nginx搭建高可用,高并发的wcf集群 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多情況下基于wcf的復雜均衡都首選zookeeper,這樣可以擁有更好的控制粒度,但zk對C# 不大友好,實現起來相對來說比較麻煩,實際情況下,如果

你的負載機制粒度很粗糙的話,優先使用nginx就可以搞定,既可以實現復雜均衡,又可以實現雙機熱備,以最小的代碼量實現我們的業務,下面具體分享下。

一:準備的材料

1. 話不多說,一圖勝千言,圖中的服務器都是采用vmware虛擬化,如下圖:

《1》 三臺windows機器 ,兩個WCF的windows服務器承載(192.168.23.187,192.168.23.188),一臺Client的服務器(192.168.23.1)

《2》 一臺Centos機器,用來承載web復雜均衡nginx(192.168.23.190)。

《3》在所有的Client的Hosts文件中增加host映射:【192.168.23.190 cluster.com】,方便通過域名的形式訪問nginx所在服務器的ip地址。

二:環境搭建

1. WCF程序

既然是測試,肯定就是簡單的程序,代碼就不完全給出了。

《1》 HomeService實現類代碼如下(輸出當前server的ip地址,方便查看):

1 public classHomeService : IHomeService2 {3 public string DoWork(stringmsg)4 {5 var ip = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault(i => i.AddressFamily ==

6 AddressFamily.InterNetwork).ToString();7

8 return string.Format("當前 request 由 server={0} 返回", ip);9 }10 }

《2》 App.Config代碼

1 <?xml version="1.0" encoding="utf-8"?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

因為windows的兩臺機器的ip地址是192.168.23.187,192.168.23.188,所以部署的時候注意一下config中的baseAddress地址。

2. centos上的nginx搭建

nginx我想大家用的還是比較多的,去官網下載最新的就好【

[root@localhost nginx-1.13.6]# yum install -y gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel

[root@localhost nginx-1.13.6]# ./configure --prefix=/usr/myapp/nginx

[root@localhost nginx-1.13.6]# make && make install

然后在nginx的安裝目錄下面找到conf文件,修改里面的nginx.conf 配置。

[root@localhost nginx]# cd conf

[root@localhost conf]# ls

fastcgi.conf koi-utf nginx.conf uwsgi_params

fastcgi.conf.default koi-win nginx.conf.default uwsgi_params.defaultfastcgi_params mime.types scgi_params win-utf

fastcgi_params.default mime.types.default scgi_params.default[root@localhost conf]# vim nginx.conf

詳細配置如下,注意下面“標紅”的地方,權重按照1:5的方式進行調用,關于其他的配置,大家可以在網上搜一下就可以了。

#user nobody;

worker_processes1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections1024;

}

http {

include mime.types;

default_type application/octet-stream;

#log_format main'$remote_addr - $remote_user [$time_local] "$request"'#'$status $body_bytes_sent "$http_referer"'#'"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout0;

keepalive_timeout65;

#gzip on;

upstream cluster.com{

server192.168.23.187:8733 weight=1;

server 192.168.23.188:8733 weight=5;

}

server {

listen80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location/ {

root html;

index index.html index.htm;

proxy_pass http://cluster.com;

#設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實IP

proxy_set_header X-Forwarded-Host $host;

proxy_set_header X-Forwarded-Server $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

}

#error_page404 /404.html;

# redirect server error pages to thestatic page /50x.html

#

error_page500 502 503 504 /50x.html;

location= /50x.html {

root html;

}

# proxy the PHP scripts to Apache listening on127.0.0.1:80#

#location~\.php$ {

# proxy_pass http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on127.0.0.1:9000#

#location~\.php$ {

# root html;

# fastcgi_pass127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME/scripts$fastcgi_script_name;

# include fastcgi_params;

#}

# deny access to .htaccess files,if Apache's document root

# concurs with nginx's one

#

#location~ /\.ht {

# deny all;

#}

}

# anothervirtual host using mix of IP-, name-, and port-based configuration

#

#server {

# listen8000;

# listen somename:8080;

# server_name somename alias another.alias;

# location/{

# root html;

# index index.html index.htm;

# }

#}

# HTTPS server

#

#server {

# listen443ssl;

# server_name localhost;

# ssl_certificate cert.pem;

# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

# location/{

# root html;

# index index.html index.htm;

# }

#}

}

3. client端的程序搭建

《1》 第一件事就是將?192.168.23.190 映射到本機的host中去,因為服務不提供給第三方使用,所以加host還是很輕松的。

192.168.23.190 cluster.com

《2》 然后就是client端程序添加服務引用,因為添加了host映射,所以服務引用地址就是"http://cluster.com"。 代碼如下:

1 classProgram2 {3 static void Main(string[] args)4 {5 for (int i = 0; i < 1000; i++)6 {7 HomeServiceClient client = newHomeServiceClient();8

9 var info = client.DoWork("hello world!");10

11 Console.WriteLine(info);12

13 System.Threading.Thread.Sleep(1000);14 }15

16 Console.Read();17 }18 }

最后來執行以下程序,看看1000次循環中,是不是按照權重1:5 的方式對后端的wcf進行調用的???

看到沒有,是不是很牛逼,我只需要通過cluster.com進行服務訪問,nginx會自動給我復雜均衡,這就是我們開發中非常簡單化的wcf復雜均衡。

希望本篇對你有幫助~~~~ ??附完整源代碼:cluster.zip

總結

以上是生活随笔為你收集整理的wcf高并发 mysql_使用nginx搭建高可用,高并发的wcf集群的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。