2278棋牌源码控制输赢,Redis Sentinel h5房卡斗牛棋牌平台出租高可用服务架构搭建

前几天,看到一篇H5房卡斗牛平台,H5房卡斗牛平台租赁,想法说得很好,但是没有建设过程,本文记录了Redis哨兵高av可服务性服务体系构建过程。
    根据作者的第四个计划,
    
    1。ReDIS是一个完全开源的、免费的、符合BSD的、高性能的密钥值数据库。
    ReDIS和其他关键值缓存产品具有以下三个特征:
    Redis支持数据持久性,将内存中的数据保存到磁盘,并在重新启动时再次加载。Redis不仅支持简单的键值数据,还支持列表、集合、zset、散列和其他数据结构。Redis支持数据备份,即主从模式下的数据备份。Redis的优点:
    性能非常高——Redis读取110000次/s,写入81000次/s。富数据类型——Redis支持二进制大小写字符串、列表、散列、集和排序集数据类型操作。e.一个操作就是原子性。多个操作也支持由MULTI和EXEC指令包装的事务,即原子性。富特性-Redis也支持诸如发布订阅、通知、密钥过期等特性。RunoOb.com /ReIDIS/ReDIS-ION.HTML
    2。ReISS哨兵,ReISIS哨兵的概念,是ReIDS官方推荐的一种高度可用的解决方案。当使用Redis作为主-从高可用性解决方案时,如果主服务器出现故障,Redis本身(包括它的许多客户端)不会在主机和备用之间自动切换,Redis-Sentinel也会这样做。当主人下降时,集群和开关。
    ReDIS StaveNele系统用于管理执行以下三个任务的多个ReDIS服务器(实例):
    监视:Sentinel不断检查主服务器和从服务器是否正常工作。通知:当被监视的Rdis服务器出现问题时,Sentinel可以通过API向管理员或其他应用程序发送通知。自动故障转移:当主服务器出现问题时无法正常工作,Sentinel启动自动故障转移操作,将故障主服务器的一个辅助服务器升级到新的主服务器,并用复制新的主服务替换故障主服务器的其他辅助服务器。当连接到失败的主服务器时,集群还将新主服务器的地址返回给客户端,允许集群使用新的主服务器而不是失败的服务器。即使用流言协议来接收关于主服务器是否离线的信息,并使用协议协议来决定是否执行自动故障转移。移动并选择哪个服务器是新的主服务器。
    一个哨兵进程可以连接到其他几个哨兵进程,每个哨兵进程可以检查彼此的可用性并交换信息。
    上面的内容是从http:/rDeDoc .com /Stutial/StaveNel.HTML中提取的。
    三。构建ReDIS服务器(Master),我们将遵循上面的架构图,大约三个服务器(防火墙关闭):
    10.9.10.154主redis-server redis-.nel10.9.10.152从redis-server redis-.nel10.9.10.215redis-.nel首先从redis.ioreleases下载redis的最新版本。
    http
ter-runter$CC Makefile.dep INSTALL redis-sentinel CC redis-cli.o LINK redis-cli CC redis-benchmark.o LINK redis-benchmark INSTALL redis-check-rdb提示:运行make test是个好主意;)INSTALL安装INSTALL安装INSTALL安装INSTALL安装INSTALL安装安装INSTALL安装成功编译,将被redis-4.0.8/src头记录,生成redis-服务器和ReISS哨兵可执行文件。
    然后,在主节点(10.9.10.154)上,我们创建具有以下示例配置的redis-4.0.8/redis-master.conf配置文件:
    #使用守护进程yes#unprotected模式,外部访问受保护模式no#port 6379#bound ip,本地IP bind 10.9.10.154#学习和开发,使用最大日志级别,可以看到日志信息最多的日志级别调试#指定日志文件路径,没有file要做到这一点,创建日志文件hoMe/ubuntu/Redis/ReDIS-4.0.8/ReIS-Server。Log-x客户端访问,要求PASS 123456需要密码连接,然后启动主机:
    Src/redis-server redis-master.config $cat redis-server.config $cat redis-server.log 8517:8517:C 28 Feb 06:06:10:10:38.345####oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 8517:C 28 Feb 06:10:10:10:10:38.345ation loaded 8518:M 28FEB 06:10:10*将打开文件的最大数量增加到10032(最初设置为1024)。8518:2月28日06:10:38.352*运行模式=独立运行,端口=6379.8518:M 6379.8518:M282月28日2月28日2月2282月206:10:10:38.352#警告:511的TCP积压设置511不能强制procproc2月06:10:38.352警告您在内核中启用了透明巨型页面(THP)支持。这将导致Redis的延迟和内存使用问题。要修复此问题,请运行echo.gtsyskernelmm.t_hugepageenabled作为根,并将其添加到etcrc local,以便保留setti。在THP被禁用之后,Redis必须重新启动。8518:M 28 Feb 06:10:38.352*准备接受连接8518:M 28 Feb 06:10:38.352-0(从机),765776字节用于查看Redis的状态:
    $redis-cli-h 10.9.10.154-p 6379-a 123456 10.9.10.154:6379gt;INFO复制#复制角色:主连接_从站:0master_replid:0master_replid:7f90fb4ba0c450b184a348f31d9c40b010d master_replid2:0000000000000000000000000000000000000000000000000000_._offset:0_replreplreplreplreplreplrepley:-log-1_activ_replid 1E:0repl_backlog_log_size:01048576 PrimeBeaLogyFixSTyByTeOffOffice:0 RealPosixReLogyStudiLeN:0:10.97.154:6399GT;乒乓添加和获取键值测试:
    10. 7.154:637 9GT;集合测试Hello OK 107.10154:637 9GT;获得测试HeleReles是常用命令:
    开始服务:服务redis开始停止服务:服务redis停止重新启动服务:如果服务redis x未配置为服务服务,则可以通过以下命令关闭Redis:
    设置Redis Server(从机)从节点类似于构建主节点,只是redis-slave.conf配置文件有所不同:
    使用守护是无保护模式,保护模式没有从外部网络访问的6379端口绑定IP。本地IP绑定10.9.10.152#指定用于学习和开发的主IP地址和端口从站10.9.10.154 6379#。使用最大日志级别,可以看到最多的日志。日志级别Debug G指定日志文件的路径。如果没有文件,则创建Logfile /home /ubuntu/Redis/ReDIS-4.0.8/ReIS-Server。Log-*设置密码主AUTH 123456以访问主机并启动从机:
    Srcredis-服务器redis-从服务器redis-从从.conf$$cat redis-服务器$cat$cat redis-服务器.log 7307.log 7307#7307.#7307.#7307.$cat#737373737307$cat$cat.$cat$2月206$2月20606 06 06 06 06 06 06:11:11:11:11:11:11:11:11:11:11:11:00.11:00.987.987##Redis版本=4 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8,bits=64,commit=00000,.=0:.=0,start=7307,just 7307:just 7307:OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOfiguration加载了7308S 28,2月28日,06:11:00.989*将打开文件的最大数量增加到10032(最初设置为1024)。7308:S2282月28日06:11:00.989*运行模式=独立运行,端口=6379.7308:S26379.7308:S2282月2282月2282月206:06:11:00.990#警告:511的TCP积压设置不能强制proc08:S 28 2月28日06:11:00.990警告您在内核中启用了透明巨页(THP)支持。这将导致Redis的延迟和内存使用问题。要修复此问题,请运行命令echo,永不gt;S/kernelmm.t_hugepageenabled a s根,并将其添加到etc/rc.local,以便保留s。重新启动后重启。在THP被禁用后,必须重新启动Redis。7308:S 28 2月28日06:11.990*准备接受7308:S 28 2月28日连接(从站)06:11:00.990-0,76572月06:00.990-0连接36字节,使用7308:S 28:S 28 2月28日06:11:00.990*连接到MASTER 10.9.15 4:6379 7308:S 28:S 28 2月28日06:11:00.990*-gt;从同步开始7308:S 28 Feb 06:11.990*SYNC的非阻塞连接触发事件.7308:S 28 Feb 06:S 28 Feb 06:S 28:S 28 Feb 06:11:00.991*主机响应PING,复制可以继续7308:S 28 Feb 06:11.993*部分重新同步不可能(没有缓存主机)7308:S 28 Feb 06:S 28:11.993*995×从主:Redis,B929,9FF66F9610687CE95DDFBDECB986:0检查完整的状态:
    Redis-cli-h 10.9.10.152-p 6379-a 123456 10.9.10.154:6379gt;INFO复制#复制角色:从属master_host:10.9.10.154master_port:6379master_link_status:up_last_io_seconds_s:10_sync_.:0slave_repl_offset:280ve_.:100:1_connected_read_.:1_slave_read_host:10.9.10。154master_port:6379master_link_status:up_last_io_seconds_master_.:0slave_repl_offset:Es:0master_replid:55b29a9f06ffb89f961087ce95ddfbdeccb986master_replid 2:0000000000000000000000000master_repl_offset:280._repl_offset: -1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_offset:1repl_histlen:280.10.9.152:PONG,但是;然后,我们将检查主服务器的状态(更新._slaves的信息):
    $redis-cli-h 10.9.10.154-p 6379-a 123456 10.9.10.154:6379gt;INFO复制#复制角色:主._slaves:1000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000百万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万万00 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000Master_repl_offset:28._repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:28此外,可以通过向主服务器添加密钥和值来测试,然后获得v_backlog_active_size:1048576 repl_backlog_first_byte_offset:28。出售相应的密钥。
    5。构建Redis Sentinel,然后在三个服务器上配置Redis Sentinel,创建redis-4.0.8/.nel-my.conf配置文件、示例配置(请记住更改不同的绑定ip):
    端口26379绑定10.9.10.154守护进程是是日志文件home%ubuntu/redis/redis-4.0.8redis-.nel.log哨兵监视器管理器1 10.9.10.154 6379 2哨兵身份验证管理器1 123456yncs ManagER1 1 1被配置为一组四行,因为我们只有一个主节点,所以只有一个主节点可以被配置为配置多个主节点,而不配置从节点信息,因为可以自动检测从节点(主节点将具有关于从节点的消息)
    第一行配置指示Sentinel监视名为manager 1的主服务器,该服务器的IP地址为10.9.10.154,端口号为6379,并且要求至少两个Sentinel同意失败(只要Sentinel的数量没有达到标准,自动故障转移就不会成功)。进行)。
    其他选项的基本格式如下:
    哨兵lt;选项的名称是gt;lt;主服务器的名称是gt;lt;选项的值是gt;选项描述:
    Auth-pass:选项指定主连接的密码。Down-.-.seconds:选项指定Sentinel要求服务器断开连接的毫秒。Failover-timeout:如果故障转移操作在该时间(ms)内没有完成,则考虑故障转移a..Parallel-syncs:该选项指定在执行故障转移时最多可以有多少从服务器与新主服务器同步,并且数量越小,完成故障转移所需的时间越长。接下来,启动Redis Sentinel(默认端口26379):
    $src/redis-server sentinel-my.conf--sentinelor $src/redis-sentinel-my.conf -- sentinelor or $src/redis-sentinel-my.conf $cat redis-sentinel.log 5716:X 28 Feb 03:04:04:17.407## # # # # # # # # # OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo 57OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOjust启动5716:X 28 Feb 03:04:04:04:04:17.407#Configuration加载5716:X 28 Feb 03:04:04:04:04:17.408*将打开文件的最大数量增加到10032(最初设置为1024)。```````````````````````-u.-``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````-...-` __...-.``-._` _.- Port: 26379 `-._ `._ / _.- PID: 5716 `-._ `-._ `-./ _.- _.- `-._`-._ `-.__.- _.-_.- `-._`-._ _.-_.- http://redis.io `-._ `-._`-.__.-_.- _.- `-._`-._ `-.__.- _.-_.- `-._`-._ _.-_.- `-._ `-._`-.__.-_.- _.- `-._ `-.__.- _.- `-._ _.- `-.__.- 5716:X 28 Feb 03:04:17.410 # WA511的TCP积压设置无法强制执行,因为procprocsys/procsys/net
et
et核心/somaxaxaxaxaxaxaxconn/proc
et
et
et
et
et
et
et当服务器启动ReISS哨兵时,有这样的日志(RADIS哨兵互相通信):
    5716:x28 Feb 03:18:46.404#倾斜模式退出5716:X 28 Feb 03:19:43.959*+哨兵55ebce153ac69c908800 bc14 beff24725fc5a721 10.9.10.152 [email protected] 1 10.9.10.154 6379连接测试(测试三个服务器):
    Redis-Redis-cli-10.9.10.154-p 26379 10.9.10.10.154-p 26379 10.9.10.10.154-p 26379 10.10.10.10.154-p 26379 10.10.10.10.154-p 26379 10.9 10.10.10.154-p 26379 10.10.10.10.154-2679gt;乒乒乓$redirediredis$redis$redis-redis-cli-redi-cli-重定-cli-cli-cli-10.10.10.9-10.9.9.10.10.10.10.10.152-10.152-p 26379-10.10.10.10 s:
    PING-此命令仅返回PONE.SENTINEL主机-显示监视主机的列表及其状态。SENTINEL主机{主机名}显示指定主机的状态和信息。SENTINEL从机{主机名}显示从机列表及其发送的主机状态。inels{master name}-显示主控的哨兵实例及其状态的列表。SENTINEL get-master-addr-by-name{master name}-返回IP和主控的端口。如果故障转移被处理或成功终止,则返回提升从属的IP和端口。SENTINEL复位{.}-this命令将重置所有匹配的主机名。参数是blog样式。重置过程清空主机的所有状态,并移除已经找到并与主机关联的所有从属和哨兵。SENTINEL故障转移{主机名}-如果无法访问主机,则执行fai未经其他Sentinels同意的情人。SENTINEL ckquorum{主名称}-检查当前Sentinel配置是否能够达到故障转移所需的仲裁,并且需要大多数故障转移授权。此命令应该用于监视系统以检查是否展开。yment是正确的。SENTINEL刷新配置-强制Sentinel重写磁盘上的配置,包括当前的Sentinel状态。一般来说,每次重写配置时,Sentinel都会改变其状态。但是,有时,配置文件可能由于操作错误而丢失,硬盘失败ures、包升级脚本或配置管理器。在这种情况下,接收到强制性Sentinel重写配置文件。即使上面的配置文件完全丢失,也可以使用此命令。Read哨兵故障测试我们的计划是停止大师的ReISIS服务,看看Read哨兵是如何工作的。
    首先,让我们看看当前的主节点信息(记住IP):
    $redis-cli-h 10.9.10.154-p 6379 10.9.10.154:26379gt;SENTINEL get-master-addr by-name manager 1 1)10.9.10.154 2)6379并执行以下命令(强制Redis Server睡眠120秒):
    ReDIS-CY-H 107.10154-P 637 9A A 123456调试休眠120,然后我们查看主节点信息:
    $redis-cli-h 10.9.10.154-p 6379 10.9.10.154:26379gt;SENTINEL get-master-addr-by-name manager 1)10.9.10.152)6379发现IP已成为前一个盐节点,即,10.9.10.152已成为主节点,然后查看当前主信息:
    $redis-cli-cli-10.9.10.10.10.10.152-p 6379-p 6379-a 12345616110.9.9.10.10.10.10.10.10.10.152-p634579-a 123456 10.10.10.10.10.10.10.10.152-p 6379-p 6379-p63797979797979a 1234561456 10.10.10.9.10.10.10.10.10.10.10.10.10.10.10.10.10.10.152-p 6379-p 6379-p 6379-p 6379-p 6379-p 6379-p63797979797979797979797979797979a 12345a 123451 12345b033 de604be41707070707070707070707070707070707070707070707070707b2727b27b52bcc2981_master_master_replc2981_repl replreplreplreplreplf1d4b24c9499c4a master_repl_offset:12707070707070707070707070707070707070707070707070707b277b27272727b2727b2727b27b27b27b2727b2727b27b27b22b主repl_offset:1270535._repl_offset:1208143repl_backlog_active:1repl_backlog_size:1repl_backlog_size:1048576replEN:1048 57 6SLave0:IP=10. 9·10154,端口=6379表示先前的主机已经变为SOLVE。
    在整个过程中,我们可以查看Read哨兵的日志:
    20153:X 20153:2010年2月28日2月28日0909:13:13:51.023##############eeee228282828282828120151:3:28:2829:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:13:52.102#####新经理1#+新经理经理1#+新经理1#+新经理1 1 1 1 1 20151 1 1 1 1 1 1 1 1 1 1 1 20153 20153 20153 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 20153 1 20153 1 1 1 1 20153法定人数2 1 1 20153 1 1 1 20153 1 1 1 1 20153法定人数21 1 1 1 1 1 1 [email protected] [email protected] 10.154 6379:X 1 10.154 6379:X2010年2月28日09:[email protected] [email protected] 10.10.9.154 6379:10.154 6379:X 10.154 637676767676767676764:X2月28日0909:13.365.6516161616167*开关-19-19.19.154161616161616161616161616161616161616161616161616161616161616161515151515151515151515151515151515151579。
    每个Sentinel发现主节点已关闭,并具有+sdown事件,稍后将其升级到+odown,这意味着大多数Sentinel已经同意主节点不可访问。Sentinel开始投票让Sentinel启动,并尝试故障转移故障转移。此外,请注意,Redis Sentinel不是提供外部服务的地址,它只是管理Redis主备用交换的监视工具,因此外部客户端提供的地址仍然是Redis Server的地址(当然,包括Salve,也可以提供统一的地址)。访问类似负载平衡(SLB)或虚拟IP(虚拟IP,VIP)。

原文地址:https://www.cnblogs.com/h5qipaiyuanma/p/9780345.html

时间: 2024-10-29 00:07:20

2278棋牌源码控制输赢,Redis Sentinel h5房卡斗牛棋牌平台出租高可用服务架构搭建的相关文章

如何编写轻量级微信房卡斗牛棋牌平台出售 CSS 框架

本文酝酿了半年,.有很多话要说,但是没有办法谈论它们.托德嗯,轻量级框架如雨后春笋般涌现.我认为每个人都应该总结他们工作中的共同需求,并编写一个适合他们的CSS框架.在以前的文章中,我提到了面向对象的CSS(如BEM.OOCSS.SMACSS).但是主要是类命名的策略.仍然有很多人对前端框架有肤浅的了解,Bootstrap是后端人员专用的,前端是不必要的等等.我不知道这是从哪里来的,我不喜欢使用框架.起初,也许正如许多人所想的那样,害怕新知识,无法管理,不能解决问题等等.最重要的是,许多人认为框

最完整网狐荣耀棋牌源码编译、搭建教程

我手里有多套网狐的棋牌源码,有空的时候也经常自己专研,网狐的代码质量很高,基本上都能编译通过.不过要搭建一个棋牌平台,肯定是很耗费时间跟经历的. 我先用的是6603版本,经过分析和研究,服务器这边主要是缺少KernelEngine的源码,客户端这边主要是缺少NetworkService的源码.都是核心的网络库和基础库呀,还好在网上其他地方找到了这2个工程的源码,整理编译之后发现和主体版本还是能够对上. 由于流出来的版本是VS2003的工程,我顺手就把网狐的代码移植到VS2012了,顺便把服务器移

网狐棋牌源码搭建教程之棋牌平台服务器架构(一)

一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的.所以棋牌类服务器要满足随着用户量的增加而扩展的需要. 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息. 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的. 二,需要解决的技术点 1,数据共享 因为棋牌类游戏不分区不分服(棋牌源码搭建 www.yasewl.com),我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个

【Redis源码剖析】 - Redis数据类型之有序集合zset

原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51231967 这周事情比较多,原本计划每周写两篇文章的任务看来是完不成了.今天为大家带来有序集合zset的源码分析. Redis中的zset主要支持以下命令: zadd.zincrby zrem.zremrangebyrank.zremrangebyscore.zremrangebyrank zrange.zrevrange.zrangebyscore.zrevrangebys

【Redis源码剖析】 - Redis之数据库redisDb

原创作品,转载请标明:http://blog.csdn.net/xiejingfa/article/details/51321282 今天,我们来讨论两点内容:一是Redis是如何存储类型对象的,二是Redis如何实现键的过期操作. 本文介绍的内容主要涉及db.c和redis.h两个文件. 1.redisDb介绍 Redis中存在"数据库"的概念,该结构由redis.h中的redisDb定义.我们知道Redis提供string.list.set.zset.hash五种数据类型的存储,在

棋牌源码搭建教程之棋牌游戏AI算法

棋牌游戏客户端实现采用Flash 9开发,服务端采用Win32+VC6开发(基于IOCP),数据库网关采用Win32+VC6开发(基于IOCP,MySQL5实现了处理线程池和数据库连接池).虽然服务器端去年就已经完成,但相应的机器人AI算法一直没有能力去实现.今天把它拿到Blog上来希望有机会和感兴趣的兄弟们探讨下. Kevin在他的Blog上给出了他的实现,其给出的算法思想是用宽度优先生成一棵搜索树,再根据玩牌的技巧进行剪枝与判权,机器人的AI能够像养成类游戏那样,实现在蹂躏下慢慢成长,水平逐

网狐棋牌源码下载网狐6878、EWIN后台管理教程

在QPPlatformManagerDB数据库--Base_Users表里就是后台的帐号和密码,密码是MD5加密 换成:E10ADC3949BA59ABBE56E057F20F883E 这个密码就是123456 或者大家自己去在线MD5上加密解密. ps:所用源码来自网狐棋牌源码下载 maliwl.com EWIN: QPGameWeb  --- Base_Users 测试图片:

湖南房卡跑胡子棋牌源码,娄底跑胡子\衡阳跑胡子\怀化跑胡子\湘乡跑胡子

湖南房卡跑胡子棋牌源码,包括(娄底跑胡子\衡阳跑胡子\怀化跑胡子\湘乡跑胡子\涟源跑胡子. 我们的源码都是大公司来源,经过公司技术团队多次修改,多次测试的,直接拿去给客户定制的源码,源码非常完整,优化的非常好,运行起来非常流程和完美.1.客户端源码是基于cocos2d版本开发的.代码完整可编译.亲测在WINDOWS平台下成功编译.2.编译环境: windows7(64位) + cocos3.13.1 + ndk13 + ant1.9.7 + python2.7.5 + android-sdk(2

(翻译) TFS源码控制的未来 (TFSVC vs. Git)

博主: 翻译自微软Visual Studio ALM产品组老大Brian Harry 的博客文章 The future of Team Foundation Server Version control. 近期关注微软开发工具的同学一定都对TFS有一定的了解.从2013版本号開始,TFS中提供了2种不同的源码管理方式.TFSVC和Git.随着Git的大规模流行,好像TFSVC变的越来越不重要了.而实际情况远非如此,就博主自己的经验而言.尽管互联网公司,创业团队对于Git 非常钟爱,可是对于很多传