raft免安裝的問題,透過圖書和論文來找解法和答案更準確安心。 我們找到下列問答集和資訊懶人包

raft免安裝的問題,我們搜遍了碩博士論文和台灣出版的書籍,推薦胡弦寫的 SpringCloudAlibaba微服務架構實戰派(上下冊) 和耿興元的 ODL技術內幕:架構設計與實現原理都 可以從中找到所需的評價。

另外網站漂流木筏求生》豪华版+简体中文+免费下载(已更新,免安装也說明:Flash未安装或者被禁用. 《漂流木筏求生》豪华版+简体中文+免费下载(已更新,免安装) – BestRepackGames ...

這兩本書分別來自電子工業 和機械工業所出版 。

最後網站《Raft木筏》生存游戏中文硬盘版v1.2.0官方下载則補充:单机版《Raft木筏》生存游戏中文硬盘版v1.2.0(260.2M)官方下载,Raft是一款独特 ... ATLASv1.5免安装中文版 木筏生存中文免安装版 船长漂流记v11 免安装中文版 深海 ...

接下來讓我們看這些論文和書籍都說些什麼吧:

除了raft免安裝,大家也想知道這些:

SpringCloudAlibaba微服務架構實戰派(上下冊)

為了解決raft免安裝的問題,作者胡弦 這樣論述:

本書覆蓋了微服務架構的主要技術點,包括分散式服務治理、分散式配置管理、分散式流量防護、分散式交易處理、分散式消息處理、分散式閘道、分散式鏈路追蹤、分散式Job、分庫分表、讀寫分離、分散式緩存、服務註冊/訂閱路由、全鏈路藍綠發佈和灰度發佈。在講解這些技術點,採用“是什麼→怎麼用→什麼原理(源碼解析)”的主線來講解。為了方便讀者在企業中落地Spring Cloud Alibaba專案,本書還包括幾個相對完整的項目實戰:全鏈路日誌平臺、中台架構、資料移轉平臺、業務鏈路告警平臺。 本書的目標是:①讓讀者在動手中學習,而不是“看書時好像全明白了,一動手卻發現什麼都不會”;②讀者可以掌握微服務全棧技術,

而不僅僅是Spring Cloud Alibaba框架,對於相關的技術(Seata、RocketMQ),基本都是從零講起,這樣避免了讀者為了學會微服務技術,得找Spring Cloud Alibaba的書、Seata的書、RocketMQ的書……本書是一站式解決方案。 ★入門篇 第1章 進入Spring Cloud Alibaba的世界 /2 1.1 瞭解微服務架構 /2 1.1.1 單體架構與微服務架構的區別 /2 1.1.2 分散式架構與微服務架構的區別 /6 1.2 如何構建微服務架構 /8 1.2.1 構建微服務架構的目標 /8 1.2.2 構建微服務架構的關鍵點

/8 1.3 認識Spring Cloud Alibaba /11 1.4 學習Spring Cloud Alibaba的建議 /12 1.4.1 熟悉Spring Boot /12 1.4.2 熟悉Spring Cloud /13 1.4.3 Spring Cloud Alibaba的版本演進 /14 1.5 Spring Cloud Alibaba與Spring Cloud的關係 /15 1.6 搭建基礎環境 /16 1.6.1 安裝Maven /16 1.6.2 熟悉Git /18 第2章 熟用開發工具 /19 2.1 安裝開發工具IntelliJ IDEA /19 2.2 【實例】

用Spring Cloud Alibaba開發一個RESTful API服務 /20 2.3 瞭解Spring Framework官方開發工具STS /24 2.4 瞭解Spring Framework官方腳手架工具 /25 ★基礎篇 第3章 Spring Cloud Alibaba基礎實戰 /28 3.1 Spring Cloud Alibaba“牛刀小試” /28 3.1.1 【實例】實現樂觀鎖 /28 3.1.2 【實例】實現多資料來源 /32 3.1.3 【實例】實現SQL語句中表名的動態替換 /35 3.2 【實例】用Maven和Spring Cloud Alibaba實現多環境

部署 /36 3.2.1 初始化 /37 3.2.2 多環境配置 /37 3.2.3 構建 /38 3.2.4 效果演示 /41 3.3 【實例】用“MyBatis-Plus + Spring Cloud Alibaba”實現多租戶架構 /42 3.3.1 多租戶的概念 /42 3.3.2 多租戶的原理 /42 3.3.3 架構 /44 3.3.4 搭建及效果演示 /46 第4章 分散式服務治理――基於Nacos /48 4.1 認識分散式服務治理 /48 4.1.1 什麼是分散式服務治理 /48 4.1.2 為什麼需要分散式服務治理 /49 4.2 瞭解主流的註冊中心 /50 4.2.1

Nacos /50 4.2.2 ZooKeeper /51 4.2.3 Consul /52 4.2.4 Sofa /53 4.2.5 Etcd /53 4.2.6 Eureka /54 4.2.7 對比Nacos、ZooKeeper、Sofa、Consul、Etcd和Euraka /54 4.3 將應用接入Nacos 註冊中心 /55 4.3.1 【實例】用“Nacos Client + Spring Boot”接入 /55 4.3.2 【實例】用Spring Cloud Alibaba Discovery接入 /57 4.4 用“NacosNamingService類 + @EnableD

iscoveryClient”實現服務的註冊/訂閱 /59 4.4.1 服務註冊的原理 /59 4.4.2 服務訂閱的原理 /69 4.4.3 【實例】通過服務冪等性設計驗證服務的註冊/訂閱 /74 4.5 用“Ribbon + Nacos Client”實現服務發現的負載均衡 /82 4.5.1 為什麼需要負載均衡 /82 4.5.2 【實例】用“Ribbon + Nacos Client”實現負載均衡 /83 4.6 用CP模式和AP模式來保持註冊中心的資料一致性 /88 4.6.1 瞭解CAP理論 /88 4.6.2 瞭解Nacos的CP模式和AP模式 /89 4.6.3 瞭解Raft與

Soft-Jraft /90 4.6.4 Nacos註冊中心AP模式的資料一致性原理 /91 4.6.5 Nacos註冊中心CP模式的資料一致性原理 /96 4.6.6 【實例】用持久化的服務實例來驗證註冊中心的資料一致性 /104 4.7 用緩存和檔來存儲Nacos的中繼資料 /106 4.7.1 認識Nacos的中繼資料 /106 4.7.2 用緩存存儲Nacos的中繼資料 /108 4.7.3 用檔存儲Nacos的中繼資料 /110 4.7.4 【實例】用Spring Cloud Alibaba整合Nacos和Dubbo的中繼資料 /111 4.8 用Nacos Sync來實現應用服務的

資料移轉 /114 4.8.1 為什麼要進行應用服務的資料移轉 /115 4.8.2 如何完成應用服務的資料移轉 /116 4.8.3 【實例】將Eureka註冊中心中的應用服務資料移轉到Nacos註冊中心中 /117 第5章 分散式配置管理――基於Nacos /122 5.1 認識分散式配置管理 /122 5.1.1 什麼是分散式配置管理 /122 5.1.2 為什麼需要分散式配置管理 /123 5.2 瞭解主流的配置中心 /124 5.2.1 Nacos /124 5.2.2 Spring Cloud Config /126 5.2.3 Apollo /127 5.2.4 對比Nacos

、Spring Cloud Config、Apollo和Disconf /127 5.3 將應用接入Nacos配置中心 /128 5.3.1 接入方式 /128 5.3.2 認識Nacos配置中心的配置資訊模型 /128 5.3.3 瞭解NacosConfigService類 /129 5.3.4 【實例】用Nacos Client接入應用 /129 5.3.5 【實例】用Open API接入應用 /132 5.3.6 【實例】用Spring Cloud Alibaba Config接入應用 /134 5.4 用HTTP協議和gRPC框架實現通信管道 /137 5.4.1 什麼是gRPC /1

37 5.4.2 “用HTTP實現Nacos Config通信管道”的原理 /137 5.4.3 “用‘長輪詢 + 註冊監聽器’機制將變 之後的配置資訊同步到應用”的原理 /141 5.4.4 “用gRPC框架實現用戶端與Nacos Config Server之間通信管道”的原理 /148 5.4.5 【實例】用“採用gRPC通信管道的Nacos Config”實現配置資料的動態 新 /151 5.5 用“Sofa-Jraft + Apache Derby”保證配置中心的資料一致性 /152 5.5.1 Nacos配置中心的資料一致性原理 /153 5.5.2 【實例】用“切換所連接的Naco

s節點”驗證資料一致性 /159 5.6 用資料庫持久化配置中心的資料 /161 5.6.1 為什麼需要持久化 /161 5.6.2 持久化的基礎配置 /162 5.6.3 持久化的原理 /162 5.6.4 【實例】用“配置資訊的灰度發佈”驗證持久化 /165 5.7 用“Spring Cloud Alibaba Config + Nacos Config”實現配置管理(公共配置、應用配置和擴展配置) /168 5.7.1 “按照優先順序載入屬性”的原理 /168 5.7.2 【實例】驗證公共配置、應用配置和擴展配置的優先順序順序 /172 第6章 分散式流量防護――基於Sentinel

/175 6.1 認識分散式流量防護 /175 6.1.1 什麼是分散式流量防護 /175 6.1.2 為什麼需要分散式流量防護 /177 6.2 認識Sentinel /179 6.3 將應用接入Sentinel /180 6.3.1 搭建Sentinel控制台 /180 6.3.2 【實例】用Sentinel Core手動地將應用接入Sentinel /181 6.3.3 【實例】用Spring Cloud Alibaba Sentinel將應用接入Sentinel /183 6.4 用HTTP或者Netty實現通信管道 /184 6.4.1 認識NIO框架Netty /184 6.4.2

用SPI機制實現外掛程式化通信管道的原理 /184 6.4.3 “用外掛程式類NettyHttpCommandCenter實現通信管道”的原理 /189 6.4.4 “用SimpleHttpCommandCenter類實現通信管道”的原理 /192 6.4.5 【實例】用Netty實現通信管道,實現“從應用端到Sentinel控制台的流量控制規則推送” /196 6.5 用篩檢程式和攔截器實現組件的適配 /198 6.5.1 什麼是篩檢程式和攔截器 /198 6.5.2 “Sentinel通過篩檢程式適配Dubbo”的原理 /199 6.5.3 “Sentinel通過攔截器適配Spring

MVC”的原理 /203 6.5.4 【實例】將Spring Cloud Gateway應用接入Sentinel,管理流量控制規則 /206 6.6 用“流量控制”實現流量防護 /208 6.6.1 什麼是流量控制 /208 6.6.2 槽位元(Slot)的動態載入機制 /210 6.6.3 “載入應用運行的監控指標”的原理 /214 6.6.4 “用QPS/併發執行緒數實現流量控制”的原理 /216 6.6.5 “用調用關係實現流量控制”的原理 /222 6.6.6 【實例】通過控制台即時地修改QPS驗證元件的流量防控 /224 6.7 用“熔斷降級”實現流量防護 /227 6.7.1 什麼

是熔斷降級 /227 6.7.2 “實現熔斷降級”的原理 /228 6.7.3 【實例】用“類比Dubbo服務故障”驗證服務調用熔斷降級的過程 /235 6.8 用“系統自我調整保護”實現流量防護 /239 6.8.1 什麼是“系統自我調整保護” /239 6.8.2 “系統自我調整保護”的原理 /240 6.8.3 【實例】通過調整應用服務的入口流量和負載,驗證系統自我調整保護 /243 6.9 用Nacos實現規則的動態配置和持久化 /247 6.9.1 為什麼需要“規則的動態配置” /247 6.9.2 為什麼需要“規則的持久化” /248 6.9.3 “規則的動態配置”的原理 /248

6.9.4 “規則的持久化”的原理 /255 6.9.5 【實例】將Dubbo應用接入Sentinel,實現規則的動態配置和持久化 /257 ★中級篇 第7章 分散式交易處理――基於Seata /264 7.1 認識分散式事務 /264 7.1.1 什麼是分散式事務 /264 7.1.2 為什麼需要分散式事務 /267 7.2 認識Seata /268 7.2.1 Seata的基礎概念 /268 7.2.2 Seata的事務模式 /269 7.3 將應用接入Seata /274 7.3.1 搭建Seata Server的高可用環境 /274 7.3.2 【實例】使用seata-sprin

g-boot-starter將應用接入Seata /279 7.3.3 【實例】使用Spring Cloud Alibaba 將應用接入Seata /282 7.4 用Netty實現用戶端與伺服器端之間的通信管道 /284 7.4.1 “用Netty實現通信管道的伺服器端”的原理 /284 7.4.2 “用Netty實現通信管道的用戶端”的原理 /289 7.5 用攔截器和篩檢程式適配主流的RPC框架 /295 7.5.1 “用篩檢程式適配Dubbo”的原理 /295 7.5.2 “用攔截器適配gRPC”的原理 /297 7.6 用AT模式實現分散式事務 /299 7.6.1 “用資料來源代理

實現AT模式的零侵入應用”的原理 /299 7.6.2 “用全域鎖實現AT模式第二階段的寫隔離”的原理 /304 7.6.3 【實例】搭建Seata的AT模式的環境,並驗證AT模式的分散式事務 場景 /317 7.7 用TCC模式實現分散式事務 /327 7.7.1 用GlobalTransactionScanner類掃描用戶端,開啟TCC動態代理 /327 7.7.2 用攔截器TccActionInterceptor校驗TCC事務 /330 7.7.3 【實例】搭建Seata的TCC模式的環境,並驗證TCC模式的分散式事務場景 /332 7.8 用XA模式實現分散式事務 /343 7.8.1

“用資料來源代理實現XA模式的零侵入應用”的原理 /343 7.8.2 用XACore類處理XA模式的事務請求 /350 7.8.3 【實例】搭建Seata的XA模式的用戶端運行環境,並驗證XA模式的 分散式交易復原的效果 /353 7.9 用Saga模式實現分散式事務 /362 7.9.1 “用狀態機實現Saga模式”的原理 /363 7.9.2 【實例】搭建Seata的Saga模式的用戶端運行環境,並驗證Saga模式的分散式事務場景 /367 第8章 分散式消息處理――基於RocketMQ /374 8.1 消息中介軟體概述 /374 8.1.1 什麼是消息中介軟體 /374 8.1.

2 為什麼需要消息中介軟體 /375 8.1.3 認識RocketMQ /376 8.2 搭建RocketMQ的運行環境 /379 8.2.1 瞭解RocketMQ的安裝包 /379 8.2.2 搭建單Master的單機環境 /380 8.2.3 搭建多Master的集群環境 /380 8.2.4 搭建單Master和單Slave的集群環境 /382 8.2.5 搭建Raft集群環境 /384 8.2.6 【實例】用RocketMQ Admin控制台管控RocketMQ /386 8.3 將應用接入RocketMQ /386 8.3.1 【實例】用rocketmq-spring-boot-st

arter框架將應用接入RocketMQ /387 8.3.2 【實例】用spring-cloud-starter-stream-rocketmq框架將應用接入 RocketMQ /389 8.4 用Netty實現RocketMQ的通信管道 /392 8.4.1 用NettyRemotingClient類實現用戶端的通信管道 /393 8.4.2 用NettyRemotingServer類實現伺服器端的通信管道 /395 8.5 用“非同步”“同步”和“ 多發送一次”模式生產消息 /400 8.5.1 用“非同步”模式生產消息的原理 /400 8.5.2 用“同步”模式生產消息的原理 /403

8.5.3 用“ 多發送一次”模式生產消息的原理 /405 8.5.4 【實例】在Spring Cloud Alibaba專案中生產同步消息和非同步消息 /407 8.6 用Push模式和Pull模式消費消息 /410 8.6.1 “用Push模式消費消息”的原理 /410 8.6.2 “用Pull模式消費消息”的原理 /421 8.6.3 【實例】生產者生產消息,消費者用Pull模式和Push模式消費消息 /431 8.7 用兩階段提交和定時回查事務狀態實現事務消息 /437 8.7.1 什麼是事務消息 /437 8.7.2 兩階段提交的原理 /437 8.7.3 定時回查事務狀態的原理

/447 8.7.4 【實例】在Spring Cloud Aliaba專案中生產事務消息 /451 第9章 分散式閘道――基於Spring Cloud Gateway /456 9.1 認識閘道 /456 9.1.1 什麼是閘道 /456 9.1.2 為什麼需要閘道 /457 9.1.3 認識Spring Cloud Gateway /460 9.2 用Reactor Netty實現 Spring Cloud Gateway的通信管道 /463 9.2.1 什麼是Reactor Netty /463 9.2.2 “用篩檢程式代理閘道請求”的原理 /466 9.3 用“路由規則定位器”(Rou

teDefinitionLocator)載入閘道的路由規則 /473 9.3.1 “基於註冊中心的路由規則定位器”的原理 /473 9.3.2 “基於記憶體的路由規則定位器”的原理 /477 9.3.3 “基於Redis緩存的路由規則定位器”的原理 /479 9.3.4 “基於屬性檔的路由規則定位器”的原理 /480 9.3.5 【實例】用“基於註冊中心和配置中心的路由規則定位器”在閘道統一暴露API /481 9.4 用“Redis + Lua”進行閘道API的限流 /487 9.4.1 “閘道用Redis + Lua實現分散式限流”的原理 /487 9.4.2 【實例】將Spring Cl

oud Alibaba應用接入閘道,用“Redis +Lua”進行限流 /494 ★ 篇 第10章 分散式鏈路追蹤――基於Skywalking /500 10.1 認識分散式鏈路追蹤 /500 10.1.1 什麼是分散式鏈路追蹤 /500 10.1.2 認識Skywalking /502 10.2 搭建Skywalking環境 /505 10.2.1 搭建單機環境 /505 10.2.2 搭建集群環境 /507 10.3 用Java Agent將Spring Cloud Alibaba應用接入Skywalking 10.3.1 什麼是Java Agent /511 10.3.2 “Skyw

alking使用Java Agent零侵入應用”的原理 /513 10.3.3 【實例】將“基於Spring Cloud Alibaba的服務消費者和訂閱者”接入Skywalking /517 10.4 用ModuleProvider和ModuleDefine將Skywalking的功能進行模組化設計 10.4.1 為什麼需要模組化設計 /520 10.4.2 Skywalking模組化設計的原理 /522 10.4.3 Skywalking啟動的原理 /529 10.5 用HTTP、gRPC和Kafka實現“應用與Skywalking之間的通信管道” 10.5.1 “基於HTTP實現通信管道

”的原理 /532 10.5.2 “基於gRPC實現通信管道”的原理 /535 10.5.3 “基於Kafka實現通信管道”的原理 /541 10.5.4 【實例】搭建Kafka環境,並用非同步通信管道Kafka收集基於Spring Cloud Alibaba應用的運行鏈路指標資料 /549 10.6 用“註冊中心”保證集群的高可用 /551 10.6.1 為什麼需要註冊中心 /551 10.6.2 “用註冊中心保證集群高可用”的原理 /553 10.7 用“分散式配置中心”動態載入集群的配置資訊 /558 10.7.1 為什麼需要分散式配置中心 /558 10.7.2 “用配置中心動態載入集

群配置資訊”的原理 /559 10.7.3 【實例】用配置中心動態地修改告警規則 /565 10.8 用探針採集鏈路追蹤資料 /569 10.8.1 什麼是探針 /569 10.8.2 Dubbo探針的原理 /570 10.8.3 “Skywalking用探針來增強應用代碼”的原理 /573 10.8.4 【實例】類比Dubbo服務故障,用Dubbo探針採集鏈路追蹤資料 10.9 用Elasticsearch存儲鏈路追蹤資料 /583 10.9.1 什麼是Elasticsearch /583 10.9.2 存儲鏈路追蹤指標資料的原理 /584 10.9.3 【實例】將Skywalking集群接

入Elasticsearch,並採集Spring Cloud Alibaba應用的鏈路追蹤資料 /595 第11章 分散式Job――基於Elastic Job /598 11.1 認識分散式Job /598 11.1.1 為什麼需要分散式Job /598 11.1.2 認識Elastic Job /602 11.2 將應用接入Elastic Job Lite /604 11.2.1 將應用接入Elastic Job Lite的3種模式 /605 11.2.2 搭建Elastic Job Lite的分散式環境 /607 11.2.3 【實例】用Spring Boot Starter將Sprin

g Cloud Alibaba應用接入Elastic Job Lite /608 11.3 “實現Elastic Job Lite的本地Job和分散式Job”的原理 /611 11.3.1 用Quartz框架實現本地Job /611 11.3.2 用ZooKeeper框架實現分散式Job /621 11.3.3 【實例】在Elastic Job控制台中操控分散式Job /625 11.4 “用SPI將Job分片策略外掛程式化”的原理 /627 11.4.1 用SPI工廠類JobShardingStrategyFactory載入分片策略 /628 11.4.2 用ShardingService類

觸發Job去執行分片策略 /631 11.4.3 【實例】將Spring Cloud Alibaba應用接入帶有分片功能的分散式Job /633 11.5 “實現分散式Job的事件追蹤”的原理 /636 11.5.1 用基於Guava的事件機制實現分散式Job的事件追蹤 /636 11.5.2 用資料庫持久化分散式Job的運行狀態和日誌 /643 11.5.3 【實例】將Spring Cloud Alibaba應用接入Elastic Job,並開啟分散式Job的事件追蹤 /652 第12章 分庫分表和讀寫分離――基於ShardingSphere 12.1 認識ShardingSphere /

655 12.1.1 什麼是分散式資料庫 /655 12.1.2 什麼是ShardingSphere /658 12.2 將應用接入ShardingSphere JDBC /662 12.2.1 用四種模式將應用接入Shardingsphere JDBC /662 12.2.2 【實例】用Spring Boot將應用接入Shardingsphere JDBC並完成分庫分表 /665 12.3 “用路由引擎實現分庫分表”的原理 /681 12.3.1 綁定分庫分表規則和資料庫資料來源,並初始化路由引擎 /682 12.3.2 攔截SQL語句,並啟動路由引擎 /689 12.4 “讀寫分離”的原理

/703 12.4.1 讀取應用設定檔中的資料庫據源及讀寫分離規則 /703 12.4.2 使用ReplicaQuerySQLRouter類的createRouteContext()方法創建讀寫分離的路由上下文物件RouteContext /704 12.4.3 使用ReplicaQueryRuleSpringbootConfiguration類載入應用的]負載等化器ReplicaLoadBalanceAlgorithm物件 /706 12.5 用Netty實現Shardingsphere Proxy的通信管道 /708 12.5.1 “Shardingsphere Proxy通信管道”的原

理 /708 12.5.2 【實例】搭建通信管道環境,將Spring Cloud Alibaba應用接入Shardingsphere Proxy /711 12.6 “使用SQL解析引擎實現Shardingsphere Proxy分庫分表”的原理 12.6.1 為什麼需要SQL解析引擎 /715 12.6.2 使用命令設計模式實現SQL語句的路由 /716 12.6.3 “使用MySQLComStmtPrepareExecutor類處理SQL請求”的原理 12.6.4 “使用MySQLComStmtExecuteExecutor類處理SQL請求”的原理 第13章 分散式緩存――基於Redis

/741 13.1 認識緩存 /741 13.1.1 什麼是本地緩存 /741 13.1.2 什麼是分散式緩存 /743 13.1.3 什麼是Redis /745 13.1.4 Redis的整體架構 /746 13.2 搭建Redis集群環境 /747 13.2.1 搭建主從環境 /747 13.2.2 搭建Sentinel集群環境 /751 13.2.3 搭建Codis集群環境 /756 13.2.4 搭建Redis Cluster集群環境 /769 13.3 將Spring Cloud Alibaba應用接入Redis /775 13.3.1 【實例】集成spring-boot-star

ter-data-redis,將Spring Cloud Alibaba應用接入Redis主從環境 /775 13.3.2 【實例】集成redisson-spring-boot-starter,將Spring Cloud Alibaba 應用接入Redis的Sentinel環境 /778 13.3.3 【實例】集成Jedis,將Spring Cloud Alibaba應用接入Redis的Codis集群環境 /782 13.3.4 【實例】集成Lettuce,將Spring Cloud Alibaba應用接入Redis Cluster集群環境 /785 13.4 “用分散式緩存Redis和Red

isson框架實現分散式鎖”的原理 13.4.1 什麼是分散式鎖 /789 13.4.2 初始化RedissonClient並連接Redis的伺服器端 /791 13.4.3 “用Redisson框架的RedissonLock類實現分散式鎖”的原理 13.4.4 【實例】在Spring Cloud Alibaba應用中,驗證分散式鎖的功能 第14章 服務註冊/訂閱路由、全鏈路藍綠發佈和灰度發佈――基於Discovery 14.1 認識服務註冊/訂閱路由、藍綠發佈和灰度發佈 /815 14.1.1 什麼是服務註冊路由、服務訂閱路由 /816 14.1.2 什麼是藍綠發佈 /816 14.1.3

什麼是灰度發佈 /817 14.1.4 認識微服務治理框架Discovery /819 14.2 “用外掛程式機制來集成主流的註冊中心和配置中心”的原理 /822 14.2.1 集成主流的註冊中心 /822 14.2.2 集成主流的配置中心 /827 14.3 “用Open API和配置中心動態變修改規則”的原理 /828 14.3.1 用Open API動態修改規則 /829 14.3.2 用配置中心動態修改規則 /834 14.3.3 【實例】在Spring Cloud Alibaba應用中用Nacos配置中心變 規則,並驗證規則動態變 的效果 /839 14.4 “用服務註冊/訂閱實現

服務的路由”的原理 /842 14.4.1 用“服務註冊的前置處理和註冊監聽器”實現基於服務註冊的服務路由 /843 14.4.2 用“服務訂閱前置處理 + 註冊監聽器”實現基於服務訂閱的服務路由 /849 14.4.3 【實例】在Spring Cloud Alibaba應用中配置服務註冊的路由規則 14.4.4 【實例】在Spring Cloud Alibaba應用中配置服務訂閱的路由規則 14.5 “用路由篩檢程式實現全鏈路的藍綠發佈和灰度發佈”的原理 /866 14.5.1 用路由篩檢程式適配 Spring Cloud Gateway閘道 /866 14.5.2 用路由篩檢程式適配 RE

STful API /869 14.5.3 【實例】在Spring Cloud Alibaba應用中配置全鏈路灰度發佈的規則,並驗證全鏈路灰度發佈的效果 /871 14.5.4 【實例】在Spring Cloud Alibaba應用中配置全鏈路藍綠發佈的規則,並驗證全鏈路藍綠發佈的效果 /879 ★專案實戰篇 第15章 【專案】全鏈路日誌平臺――基於ELK、FileBeat、Kafka、Spring Cloud Alibaba及Skywalking /886 15.1 全鏈路日誌平臺整體架構 /886 15.2 搭建環境 /887 15.3 將Spring Cloud Alibaba應用接

入全鏈路日誌平臺 /890 15.3.1 將微服務接入全鏈路日誌平臺 /890 15.3.2 使用全鏈路日誌平臺查詢業務日誌 /891 第16章 【項目】在企業中落地中台架構 /893 16.1 某跨境支付公司中台架構 /893 16.1.1 跨境支付中台架構 /893 16.1.2 跨境支付用戶中台架構 /895 16.2 某娛樂直播司中台架構 /896 16.2.1 泛娛樂直播中台架構 /896 16.2.2 直播用戶中台架構 /899 16.3 用“服務雙寫和灰度發佈”來實現中台服務上線過程中的“業務方零停機時間” /902 16.3.1 服務雙寫架構 /902 16.3.2 服務灰度

發佈架構 /903 第17章 【項目】異構資料移轉平臺――基於DataX /905 17.1 搭建環境 /905 17.1.1 軟體環境 /905 17.1.2 搭建MySQL的異構資料移轉環境 /906 17.2 搭建控制台 /909 17.2.1 構建部署包 /909 17.2.2 用部署包搭建後臺管理系統datax-admin /910 17.2.3 用部署包搭建任務執行器datax-executor /911 17.2.4 使用視覺化控制台執行MySQL異構資料移轉 /911 17.3 在Spring Cloud Alibaba應用中用DataX完成異構資料移轉 第18章 【項目】

業務鏈路告警平臺――基於Spring Cloud libaba、Nacos和Skywalking 18.1 告警平臺的整體架構設計 /922 18.2 告 務詳細設計 /924 18.2.1 產品化部署設計 /925 18.2.2 Nacos服務健康告警設計 /926 18.2.3 Skywalking鏈路錯誤告警設計 /927 18.2.4 Skywalking的指標告警設計 /928 18.2.5 RocketMQ消息堆積告警設計 /928 18.3 分析告 務的部分源碼 /929 18.3.1 用分散式Job類NacosAlarmHealthJob實現Nacos服務健康告警 18.3.2

用分散式Job類SkywalkingErrorAlarmJob實現Skywalking鏈路錯誤告警 18.4 將電商微服務接入告警平臺,驗證告警平臺的即時告警功能 /932 18.4.1 啟動告警平臺的軟體環境 /932 18.4.2 在購買商品時,在下單過程中驗證即時告警功能 /933 18.4.3 在購買商品時,在支付過程中驗證即時告警功能 /936

ODL技術內幕:架構設計與實現原理

為了解決raft免安裝的問題,作者耿興元 這樣論述:

這是一本從原始程式碼層面深入剖析ODL的著作,旨在幫助讀者在透徹理解ODL的先進架構、設計思想和實現原理後,能更有高效地進行SDN開發。 作者是的ODL專家,是SDN領域的佈道者,有在通訊類軟體研發和系統設計領域有超過15年的經驗對ODL及其源碼有深入的研究和理解。ODL架構演進極快,核心模組和介面變動頻繁,ODL子專案眾多,功能和介面碎片化嚴重,學習門檻很高,面對數百萬行的原始程式碼更是無從下手。 作者根據自己的經驗,對ODL的核心功能及其原始程式碼(氟版本和氖版本)進行反復提煉、抽絲剝繭,不僅讓讀者理解ODL的系統架構、設計思想、實現原理,而其能讓讀者領略ODL實現源碼中的代碼和設計模

式,*終實現讓讀者更高效地使用SDN的目的,掌握SDL的精髓。 全書13章,分為三個部分: 第一部分基礎環境篇(第1-2章) 主要介紹了ODL的核心概念、架構、設計目標、編譯構建環境的搭建、源碼閱讀的方法,以及ODL社區對眾多子專案的管理實踐。 第二部分核心架構篇(第3-10章) 從原始程式碼的角度詳細分析了ODL的基本物件、資料樹、MD-SAL DataStore、MD-SALRPC、MD-SAL Notification、MD-SAL Mount、MD-SAL Cluster Service的工作機制與實現原理; 第三部分公共元件篇(第11-13章) 從原始程式碼角度詳細分析了

ODL的AAA、RESTCONF、Blueprint等公共組件的設計、實現與擴展。 耿興元 ODL技術專家,目前就職於中興通訊,是作業系統及支撐平臺的軟體專家級工程師,在通訊類軟體研發及系統設計領域已有超過15年的工作經驗。2015~2017年期間,負責基於ODL的商用SDN控制器平臺的設計和研發管理工作。 在ODL領域有多年的研究和實踐經驗,曾與SDNLAB一起創建了開源專案Jaguar(基於ODL的Kubernetes網路解決方案),是該開源專案的主要管理者與貢獻者。在SDNLAB上錄製了ODL的系列課程,深受讀者歡迎。 前言 第一部分 基礎環境篇

第1章 閱讀原始程式碼前的準備  2 1.1 ODL項目介紹  2 1.1.1 ODL框架之爭  3 1.1.2 SAL的演進  3 1.1.3 ODL的子專案及分類  4 1.1.4 ODL專案的管理  6 1.2 搭建ODL編譯構建環境  6 1.2.1 安裝JDK  6 1.2.2 安裝及配置Maven  8 1.3 閱讀和調試ODL原始程式碼  9 1.3.1 ODL項目源碼下載  9 1.3.2 IntelliJ IDEA安裝  10 1.3.3 IntelliJ IDEA調試ODL的項目源碼  11 1.4 ODL設計目標  12 1.5 ODL總體架構  13 1.6 本章小結

  15 第2章 ODL專案管理設計詳解  16 2.1 問題的提出  16 2.2 解決思路  17 2.3 實現詳解  20 2.3.1 基礎parent設計  20 2.3.2 模組構建  23 2.3.3 feature組織  24 2.3.4 版本打包  25 2.4 專案範本  26 2.4.1 專案目錄佈局設計  26 2.4.2 ODL範本專案  27 2.5 本章小結  28 第二部分 核心原理篇 第3章 ODL基本物件的設計與實現  30 3.1 QName  30 3.1.1 QName定義  30 3.1.2 QName物件比較  36 3.1.3 QName對象創

建  37 3.2 YangInstanceIdentifier  38 3.2.1 Path介面定義  38 3.2.2 YangInstanceIdentifier的類定義  39 3.2.3 YangInstanceIdentifier的比較42 3.2.4 InstanceIdentifier類  44 3.3 NomalizedNode  44 3.3.1 NormalizedNode類的定義  45 3.3.2 NormalizedNode實例的創建48 3.4 本章小結  49 第4章 資料樹的設計與實現  50 4.1 基本概念  50 4.1.1 配置樹與狀態樹  51 4

.1.2 標識與定位  51 4.1.3 快照與MVCC  52 4.2 資料樹的設計與實現  52 4.2.1 Tree結構的設計  52 4.2.2 DataTree相關介面定義  55 4.2.3 DataTree的創建  57 4.3 資料樹的讀寫過程  59 4.3.1 快照實現原理  61 4.3.2 資料校驗的實現  61 4.4 MVCC機制與實現  63 4.4.1 版本號變更規則  63 4.4.2 併發控制  65 4.5 本章小結  67 第5章 MD-SAL DataStore介面設計  68 5.1 基本概念  69 5.1.1 事務和事務鏈  70 5.1.2 

數據分片  70 5.1.3 三階段提交  71 5.2 DataStore SPI設計  72 5.2.1 DOMStore  73 5.2.2 DOMStoreThreePhase-CommitCohort  75 5.2.3 DOMStoreTreePublisher  76 5.3 DataStore DOM API設計  77 5.3.1 DOMDataBroker  77 5.3.2 DOMDataTreeSharding-Service  78 5.3.3 DOMDataTreeChange-Service  80 5.4 DataStore Binding API設計  82

5.4.1 Binding基本物件介面  82 5.4.2 DataBroker  84 5.4.3 DataTreeChangeService  87 5.5 本章小結  87 第6章 MD-SAL DataStore的實現原理  88 6.1 概述  89 6.1.1 背景知識  89 6.1.2 實現原理  91 6.2 Raft演算法及其實現  92 6.2.1 Raft演算法介紹  93 6.2.2 RaftActor設計與實現  98 6.3 DataStore後端實現詳解  106 6.3.1 Shard的實現  106 6.3.2 ShardManager  110 6.3.

3 ShardStrategy及實現  112 6.4 DataStore前端實現詳解  113 6.4.1 DOMStore的實現  113 6.4.2 DOMDataBroker的實現  121 6.4.3 事務鏈實現  124 6.5 Binding DataBroker的實現  125 6.5.1 Adapter設計  125 6.5.2 BindingDOMDataBroker-Adapter的初始化  126 6.6 本章小結  130 第7章 MD-SAL RPC的設計與實現  131 7.1 一個實例  131 7.1.1 RPC的YANG模型定義  131 7.1.2 RP

C的生成介面  133 7.1.3 RPC的實現與調用  135 7.2 RPC機制的總體設計  136 7.2.1 Binding介面設計  136 7.2.2 DOM介面設計  137 7.2.3 總體實現流程  139 7.3 RPC機制實現詳解  141 7.3.1 DOMBroker實現詳解  141 7.3.2 BindingBroker實現詳解  144 7.4 Remote RPC實現詳解  149 7.4.1 Gossip協議的實現  150 7.4.2 遠程RPC註冊及調用  152 7.4.3 Actor設計實現總結  154 7.5 本章小結  155 第8章 MD-

SAL Notification的設計與實現  156 8.1 一個實例  156 8.1.1 YANG模型定義  156 8.1.2 生成的介面  157 8.1.3 消息發佈  157 8.1.4 消息訂閱  158 8.2 MD-SAL Notification介面設計  158 8.2.1 DOM介面  159 8.2.2 Binding介面  160 8.3 MD-SAL Notification實現剖析  161 8.3.1 DOM層實現詳解  161 8.3.2 Binding適配實現  169 8.4 本章小結  171 第9章 MD-SAL Mount機制與NETCONF 

172 9.1 Mount服務介面設計  172 9.1.1 DOM介面  173 9.1.2 Binding介面  174 9.2 Mount機制的實現  175 9.2.1 DOM介面實現  176 9.2.2 NETCONF南向外掛程式的實現  178 9.3 本章小結  186 第10章 MD-SAL Cluster Service  187 10.1 EntityOwnershipService  187 10.1.1 基本概念  187 10.1.2 介面設計  188 10.1.3 實現說明  192 10.2 ClusterSingletonService  195 10.

2.1 介面設計  195 10.2.2 實現說明  196 10.3 本章小結  198 第三部分 公共元件篇 第11章 AAA  200 11.1 Shiro框架介紹  201 11.1.1 Shiro是什麼  201 11.1.2 Shiro的架構  202 11.1.3 Shiro核心處理流程  204 11.2 AAA實現原理  210 11.2.1 Shiro配置優化  210 11.2.2 Realm的8個實現  212 11.2.3 Filter的實現  214 11.2.4 加解密服務  216 11.2.5 數位憑證管理  218 11.3 本章小結  219 第12章

 RESTCONF  220 12.1 RFC 8040解讀  220 12.1.1 操作  221 12.1.2 消息  222 12.1.3 資源  223 12.2 RESTCONF的實現  226 12.2.1 Jersey框架簡介  226 12.2.2 RESTCONF資源介面定義  228 12.2.3 Wrapper設計模式  231 12.2.4 初始化過程  233 12.2.5 用戶端訪問  235 12.3 本章小結  236 第13章 Blueprint及其擴展  237 13.1 Blueprint  238 13.1.1 基礎知識  238 13.1.2 運行原

理  240 13.1.3 命名空間擴展  241 13.2 Blueprint的使用  244 13.3 本章小結  247   Open Daylight(簡稱ODL)專案是Linux基金會旗下的一個 開源合作專案,致力於推進軟體定義網路(SDN)和網路功能虛擬化(NFV)的發展,目的是尋求以一種更透明的方式促進該領域的創新。該組織由行業領先者建立,旨在制定一個統一、開放的平臺,駕馭合作開發的力量,以驅動產業和生態圈的創新。ODL是針對企業、服務提供者、資料中心、WAN的模組化的開放的SDN平臺,其基於OSGi的微服務架構讓使用者能夠按需部署網路服務、應用、協定和外掛程

式。ODL平臺基本每半年發佈一次大版本,從2013年開始,項目經曆了多個版本的反覆運算已趨於成熟和穩定,幾乎成為網路創新應用場景的預設選擇。 ODL把被控制的網路看作是一個消息驅動的巨大狀態機,因此該平臺核心架構即其模型驅動的狀態保存機制與消息轉發機制,稱為模型驅動的業務抽象層(MD-SAL)。該架構的魅力源於其架構的前瞻性、可塑性和長期演進能力。 ODL 在架構設計上的先進性和靈活性,使其成為SDN領域最有影響力的開源平臺。靈活的外掛程式機制與在規模上的彈性可擴展,使ODL可應用於智慧城市和其他IoT應用等涉及多種設備類型以及多種網路技術的場景,包括光交換、IP/MPLS、LTE或5G無

線網路。ODL對這些技術的可程式設計性可以做到設備無關。如今,ODL在各場景的網路創新中的應用越來越廣泛,利用和貢獻ODL項目的中國公司數量也在不斷增長,包括華為、聯想、瑞斯康達、騰訊、Zen player、中興、阿裡巴巴和百度等。2017年3月,中興通訊成為國內首家ODL白金會員。 為什麼寫這本書 ODL不僅僅是一個SDN控制器平臺,它還是一個優秀的模型驅動架構實現,以及一個典型的分散式系統設計範例。通過ODL,我們能學習的不僅僅是SDN,也能學到其通用的程式設計技術及軟體架構設計,其分散式系統設計實現也非常值得我們借鑒。 但是,ODL作為一個開源項目,也有令人詬病的地方,主要有兩點:一

是雖然ODL架構設計比較先進,代碼實現也比較優秀,但ODL缺乏較為系統性的文檔,而且僅有的一些文檔更新也較為滯後,內容陳舊,容易誤導新手;再加上語言和文化背景的差異,足以讓大量國內ODL初級玩家望而卻步。二是ODL的架構演進非常快,核心模組和介面變動頻繁,再加上ODL子項目眾多,導致ODL功能和介面碎片化嚴重,開發者一開始面對幾百萬行代碼,確實有點“老虎吃天,無從下口”的感覺。 我作為一個一直從事軟體研發工作的工程師,深知學習與應用ODL的不易,所以我想是不是可以把我之前學習ODL的筆記—對ODL源碼 的分析和對ODL架構設計的理解整理成書,進而幫助大家深入理解ODL設計原理和思想,把握其核

心源碼實現,以不變應萬變。這對大家基於ODL平臺進行業 務研發及應用都能有所裨益。 本書的讀者對象 本書適合所有有志于解決現有網路問題並促進網路變革的通信、網路及電腦行業相關從業者,特別是希望掌握軟體定義網路熱門技術的開發人員,還適合具有一定工作經驗、關注網路熱門技術並希望查漏補缺繼續成長的程式師,以及具備一定軟體發展能力的網路技術領域從業者。 具備一定的Java語言開發基礎,瞭解網路基礎知識及分散式系統基礎知識將有助於讀者更好地理解本書中的內容。 本書的主要內容 對于廣大有志於投身網路變革大潮的從業者而言,ODL依然具有很高的門檻—100多個子項目,幾百萬行原始程式碼,OSGi、Mav

en、Akka、YANG等背景知識,都成了相關從業者應用ODL平臺的“攔路虎”。面對這些障礙,我們需要抓住ODL平臺框架的本質與核心—MD-SAL,只有真正理解ODL的這個核心框架設計,理解MD-SAL的核心源碼實現及其設計思想,才能基於ODL進行高效的SDN開發實戰,就如同習武練功,招式是外殼,內功心法是核心,二者要相輔相成。本書結合作者15年的通信軟體研發從業經驗,從ODL核心框架MD-SAL的實現源碼入手進行解構,剖析代碼中的設計模式,總結ODL中的軟體架構設計思想。本書可謂一本重在講授內功心法,並指導內功和招式結合的“武功秘笈”。 本書能幫助入門級程式師深入、直觀地理解ODL技術原

理,構建精准的知識框架;幫助有一定工作經驗的程式師填補知識漏洞,打通知識體系;説明正在應用ODL構建商用產品和應用的同仁們客觀認識並分析ODL中 現存的問題。本書還分享了作者在基於ODL進行商用開發時總結的若干實戰經驗。 勘誤與支持 本書主要內容來源於本人研究學習ODL源碼的筆 記和在應用ODL開發專案過程中的實踐經驗。我們知道ODL社區非常活躍,版本發佈頻繁,架構調整及源碼變動也比較大,這不可避免地會導致書中引用的源代 碼與ODL社區最新原始程式碼有一定出入,請讀者在閱讀過程中務必注意。同時,由於作者寫作和認知水準有限,問題在所難免,歡迎讀者朋友們通過電子郵箱 [email protected]

進行指正。 致謝 ODL官方社區的原始程式碼是創作本書的原始素材,因此我首先感謝 ODL官方社區。 其次,我要感謝未來網路學院給予我與大家分享ODL技術的平臺,以及在開源專案Jaguar的成立、運作管理和基礎設施資源上的支援。 最後,感謝中興通訊IT學院的閆林老師的鼓勵和巨大幫助。 耿興元 2019年