当前位置: 首页 > news >正文

电子商务网站开发背景专门做特医食品的网站

电子商务网站开发背景,专门做特医食品的网站,网络组建与安全通知,网站开发语言哪一种好些前言前面《Docker-Compose搭建Redis高可用哨兵集群》#xff0c;我的思路是将Redis、Sentinel、Redis Client App链接到同一个网桥网络#xff0c;这个网桥内的Redis Client App就可以使用ContainerIP访问网桥内任意redis节点。同一网桥网络访问规避了Docker上发生的NAT… 前言前面《Docker-Compose搭建Redis高可用哨兵集群》我的思路是将Redis、Sentinel、Redis Client App链接到同一个网桥网络这个网桥内的Redis Client App就可以使用ContainerIP访问网桥内任意redis节点。同一网桥网络访问规避了Docker上发生的NAT端口映射的复杂性,  但实际上并不是最常规做法。Redis Client App独立组网遇到的问题很多时候Redis Client App与Redis-Sentinel独立组网这样对Redis-Sentinel的访问就会涉及Docker宿主机NAT转换、Port映射。(这里我们就不提Docker Host模式搭建Redis-Sentinel了)资料显示 Sentinel,Docker或其他形式的网络地址转换或端口映射应谨慎混合大意是说节点无法区分收到的信息是否是已经发生Nat转换或端口映射的结果。为了解决Redis-Sentinel在Docker环境下因为NATForward Port导致的无法正确获知Slaves和正确故障转移的问题。Redis3.2之后可以强制让Slave声明自己的(IP,Port)强制让Sentinel声明自己的(IP,Port # since Redis 3.2.2, to force a replica to announce an arbitrary pair of IP and port to the master. The two configurations directives to use are: replica-announce-ip ip replica-announce-port port 上述配置可以写在Docker Command参数指定或通过Volume redis.conf 加载进redis容器# you can use the following two Sentinel configuration directives in order to force Sentinel to announce a specific set of IP and port:sentinel announce-ip ip sentinel announce-port portsentinel.conf的配置只能通过Config加载进sentinel容器。通过明牌方式通知所有交互对象redis实例就是在这个(IP,Port)上发生了NAT转换、Port映射。C#两大客户端访问Redis-Sentinel的方式归根到底一张图Redis Client先询问Sentinels,Sentinel返回Master (IP,Port)Redis Client再与以上Master (IP,Port)建立连接Docker部署Redis-Sentinel 并强制声明IP、Port这里我们采用主动声明方式在Docker上部署了Redis-Sentinel集群 1Master- 2 Slave- 3Sentinel 分别占据宿主机6380、6381、6382、 26379、26380、26381端口.CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 484da8d832f1 redis docker-entrypoint.s… 2 hours ago Up 2 hours 6379/tcp, 0.0.0.0:26380-26379/tcp redis-sentinel-2 50599c15adba redis docker-entrypoint.s… 2 hours ago Up 2 hours 6379/tcp, 0.0.0.0:26379-26379/tcp redis-sentinel-1 51ce90cc52d7 redis docker-entrypoint.s… 2 hours ago Up 2 hours 6379/tcp, 0.0.0.0:26381-26379/tcp redis-sentinel-3 d58d6973de28 redis docker-entrypoint.s… 2 hours ago Up 2 hours 0.0.0.0:6381-6379/tcp redis-slave-1 b88bd85ac109 redis docker-entrypoint.s… 2 hours ago Up 8 seconds 0.0.0.0:6382-6379/tcp redis-slave-2 3dc26c01a90d redis docker-entrypoint.s… 2 hours ago Up About an hour 0.0.0.0:6380-6379/tcp redis-master进入任意Sentinel节点使用sentinel master mymaster确认集群信息存在测试键值testKeyhello Redis-sentinelStackExchange.Redis CSRedisCore连接Redis哨兵老牌StackExchange.Redis 今年才真正支持Sentinel Github上有关Sentinel的Issue、PR历时久远PR像便秘一样最近才关闭。https://github.com/StackExchange/StackExchange.Redis/pull/692#issuecomment-375298108https://github.com/StackExchange/StackExchange.Redis/pull/1067CSRedisCore得到真传很早就支持连接哨兵而且编程写法更简单清晰。话不多说using StackExchange.Redis; using System;namespace ConsoleApp {class Program{static void Main(string[] args){var sw new Stopwatch();sw.Start();UseStackExchangeRedis();sw.Stop();Console.WriteLine(连接查询测试key,耗时sw.ElapsedMilliseconds);sw.Reset();sw.Start();UseCSRedisCore();sw.Stop();Console.WriteLine(连接查询测试key,耗时 sw.ElapsedMilliseconds);Console.ReadKey();}// StackExchange.Reids连接Redis-Sentinelpublic static void UseStackExchangeRedis(){ConfigurationOptions sentinelOptions new ConfigurationOptions();sentinelOptions.EndPoints.Add(180.76.*.*, 26379);sentinelOptions.EndPoints.Add(180.76.*.*, 26380);sentinelOptions.EndPoints.Add(180.76.*.*, 26381);sentinelOptions.TieBreaker ;sentinelOptions.CommandMap CommandMap.Sentinel;sentinelOptions.AbortOnConnectFail false;// Connect!ConnectionMultiplexer sentinelConnection ConnectionMultiplexer.Connect(sentinelOptions);// Get a connection to the masterConfigurationOptions redisServiceOptions new ConfigurationOptions();redisServiceOptions.ServiceName mymaster1; //master名称redisServiceOptions.Password redis_pwd; //master访问密码redisServiceOptions.AbortOnConnectFail true;ConnectionMultiplexer masterConnection sentinelConnection.GetSentinelMasterConnection(redisServiceOptions);var db masterConnection.GetDatabase();var value db.StringGet(testKey);Console.WriteLine($[Use StackExchange-Redis] The remote redis-sentinel test key value:{value});}// CSRedisCore连接Redis-Sentinelpublic static void UseCSRedisCore(){var csredis new CSRedis.CSRedisClient(mymaster1,passwordredis_pwd,new[] { 180.76.*.*:26379, 180.76.*.*:26380, 180.76.*.*:26381 });var value csredis.Get(testKey);Console.WriteLine($[Use CSRedisCore] The remote redis-sentinel test key value:{value});}} } 执行输出StackExchange.Redis更能体现连接的实质过程先查询再连接。CSRedisCore 小白写法无感知。总结输入本文记录两个内容1. Redis-Sentinel在Docker环境因NATForward_Port触发的问题 以及Redis官方给出的方案2. C# Redis客户端连接Redis-Sentinel集群Gthubhttps://github.com/zaozaoniao/Redis-sentinel-with-docker-compose本文纯手写测试期待你的反馈。https://redis.io/topics/sentinelhttps://redis.io/topics/replication
http://www.yutouwan.com/news/234490/

相关文章:

  • 怎么找网站的根目录小程序可以自己开发吗
  • 手机网站制作方法wordpress会员上限
  • 网络架构师和网络工程师区别麒麟seo
  • 报电子商务(网站建设与运营)写作网站投稿平台
  • 珠海建设工程信息网站请简述网络营销的含义
  • 做网站多少钱西宁君博美评企业邮箱多少钱
  • 专门做焦点图的网站php做的网站怎么发布
  • 清新区城乡建设局网站亚网互联网站设计
  • 发布一个网站需要什么打开汽车之家网页版
  • 邹城外贸网站建设深圳网站优化价格
  • 湖南长沙微信平台号百度的seo关键词优化怎么弄
  • 大数据与网站开发技术史志办干地情网站建设
  • 北京企业网站建设制作公关公司职级
  • 四川建设招标网站小说代理平台
  • 招聘预算网站怎么做徐州网站制作报价
  • 佛山的网站建设网站运营职责
  • 江门免费网站建站模板怎么做淘宝联盟网站推广
  • 手机网站方案编写莱芜最新话题
  • 均安公司网站建设赣州人才网赣州九一人才
  • 凡人网站建设wordpress 删除 wordpress.org
  • 商城站到汤泉池住房和城乡建设部网站安广东省
  • 郫县专业的网站建设甘肃网站建设公司
  • 大的网站建设公司好怎么看一个网站用什么系统做的
  • 淮北建网站费用遵义市网站建设
  • 网站推广公司简介wordpress工具栏移到底部
  • 模板建站适屏wordpress调用文章内容
  • 找印度人做网站wordpress安装二级目录下
  • 阿里云服务器创建网站网站如何制作做吸引客户
  • 太仓做网站公司厦门市建设局官方网站证书查询
  • 网站建设对企业的帮助wordpress 文章标签调用