zookeeper去中心化
㈠ consumer 為什麼需要間歇性的向zookeeper注冊offset
kafka 很多說不需要安裝zk的是因為他們都使用了kafka自帶的zk至於kafka為什麼使用zk,你首先要知道zk的作用, 作為去中心化的集群模式。需要要消費者知道現在那些生產者(對於消費者而言,kafka就是生產者)是可用的。如果沒了zk消費者如何知道呢?如果每次消費者在消費之前都去嘗試連接生產者測試下是否連接成功,效率呢?所以kafka需要zk,在kafka的設計中就依賴了zk了。
㈡ bbo是分布式服務還是集群
bbo是開源的微服務開發框架,倡導的是去中心化,每個功能封裝成獨立的模塊服務,供其他服務調用,模塊可以部署多台伺服器,是一種集群。
他和soa最大不同的是有獨立的rpc通信協議,不是像soa一樣用http協議來傳輸數據的,rpc傳輸的是二進制數據,性能優於http傳輸。
㈢ 安裝Kafka 的機器上一定要有 Zookeeper 嗎
kafka 很多說不需要安裝zk的是因為他們都使用了kafka自帶的zk 至於kafka為什麼使用zk,你首先要知道zk的作用, 作為去中心化的集群模式。 需要要消費者知道現在那些生產者(對於消費者而言,kafka就是生產者)是可用的。 如果沒了zk消費者如何知...
㈣ kafka 伺服器本機 必須安裝zookeeper 么
至於kafka為什麼使用zk,你首先要知道zk的作用, 作為去中心化的集群模式。
需要要消費者知道現在那些生產者(對於消費者而言,kafka就是生產者)是可用的。
如果沒了zk消費者如何知道呢?如果每次消費者在消費之前都去嘗試連接生產者測試下是否連接成功,效率呢?
㈤ 為什麼搭建Kafka需要zookeeper
需要一個地方存元信息。zookeeper又是分布式,做配置管理比較好的。於是就用上了。
㈥ 為什麼搭建Kafka需要zookeeper
kafka 很多說不需要安裝zk的是因為他們都使用了kafka自帶的zk
至於kafka為什麼使用zk,你首先要知道zk的作用, 作為去中心化的集群模式。
需要要消費者知道現在那些生產者(對於消費者而言,kafka就是生產者)是可用的。
如果沒了zk消費者如何知道呢?如果每次消費者在消費之前都去嘗試連接生產者測試下是否連接成功,效率呢?
所以kafka需要zk,在kafka的設計中就依賴了zk了。
㈦ 大數據主要學什麼內容
一般來說,在一線城市,以BAT來說它們企業給應屆畢業生的起薪並不高,但只要工作拚命、能力出眾,事實上入職後的2、3年裡就很容易拿到15萬元以上的年薪。而在三線互聯網公司,同等條件下,普通技術員工的年薪一般能達到15萬元左右。而准二線的互聯網公司的普通員工薪水基本也能達到或超過20萬元,與許多傳統行業相比,這樣的收入水平絕對令人艷羨。工作經驗超過5年後,互聯網企業中的收入差距就會拉大。
如此誘人的薪資,肯定是人人都想加入的。但加入的條件就在於需要掌握一定的技能,綜合很多大數據公司的要求統計如下:
1、熟練使用SQL語言;
2、熟練使用Hadoop、M/R、Hive、Storm等開發工具;
3、熟悉Linux命令及Shell編程;
4、對數據敏感,良好的邏輯分析能力,良好溝通能力和團隊精神;
5、熟悉Impala、Druid、Mdrill、ElasticSearch等大數據工具者優先;
根據企業對大數據工程師的要求,你需要學習的技術如下:
階段一、大數據基礎——java語言基礎方面
(1)Java語言基礎
(2) HTML、CSS與JavaScript
(3)JavaWeb和資料庫
階段二、 Linux&Hadoop生態體系
Linux體系、Hadoop離線計算大綱、分布式資料庫Hbase、數據倉庫Hive、數據遷移工具Sqoop、Flume分布式日誌框架
階段三、 分布式計算框架和Spark&Strom生態體系
(1)分布式計算框架
Python編程語言、Scala編程語言、Spark大數據處理、Spark—Streaming大數據處理、Spark—Mlib機器學習、Spark—GraphX 圖計算、實戰一:基於Spark的推薦系統(某一線公司真實項目)、實戰二:新浪網(www.sina.com.cn)
(2)storm技術架構體系
Storm原理與基礎、消息隊列kafka、Redis工具、zookeeper詳解、實戰一:日誌告警系統項目、實戰二:猜你喜歡推薦系統實戰
階段四、 大數據項目實戰(一線公司真實項目)
數據獲取、數據處理、數據分析、數據展現、數據應用
階段五、 大數據分析 —AI(人工智慧)
Data Analyze工作環境准備&數據分析基礎、數據可視化、Python機器學習
1、Python機器學習2、圖像識別&神經網路、自然語言處理&社交網路處理、實戰項目:戶外設備識別分析
㈧ rpc框架都有哪些rmi bbo
Dubbo分層
config(配置層 )
proxy(服務代理層)
registry( 注冊中心層)
cluster( 路由層)
monitor( 監控層)
protocol( 遠程調用層)
exchange( 信息交換層)
transport( 網路傳輸層)
serialize( 數據序列化層)
對外配置介面
以ServiceConfig, ReferenceConfig為中心,可以直接new配置類,也可以通過spring解析配置生成配置類
Javassist ProxyFactory
Jdk ProxyFactory
服務介面透明代理,生成服務的客戶端Stub和伺服器端Skeleton
以ServiceProxy為中心,擴展介面為ProxyFactory
選擇
Zookeeper
Redis
Multicast
Simple
支持基於網路的集群方式,有廣泛周邊開源產品,建議使用bbo-2.3.3以上版本(推薦使用)
依賴於Zookeeper的穩定性
支持基於客戶端雙寫的集群方式,性能高
要求伺服器時間同步,用於檢查心跳過期臟數據
去中心化,不需要安裝注冊中心
依賴於網路拓普和路由,跨機房有風險
Dogfooding,注冊中心本身也是一個標準的RPC服務
沒有集群支持,可能單點故障
封裝服務地址的注冊與發現
以服務URL為中心,擴展介面為RegistryFactory, Registry, RegistryService
選擇
Spring
Jetty
Log4j
自動載入META-INF/spring目錄下的所有Spring配置
啟動一個內嵌Jetty,用於匯報狀態
大量訪問頁面時,會影響伺服器的線程和內存
自動配置log4j的配置,在多進程啟動時,自動給日誌文件按進程分目錄
用戶不能控制log4j的配置,不靈活
條件路由
腳本路由
基於條件表達式的路由規則,功能簡單易用
有些復雜多分支條件情況,規則很難描述
基於腳本引擎的路由規則,功能強大
沒有運行沙箱,腳本能力過於強大,可能成為後門
Random
RoundRobin
LeastActive
ConsistentHash
隨機,按權重設置隨機概率(推薦使用)
在一個截面上碰撞的概率高,重試時,可能出現瞬間壓力不均
輪循,按公約後的權重設置輪循比率
存在慢的機器累積請求問題,極端情況可能產生雪崩
最少活躍調用數,相同活躍數的隨機,活躍數指調用前後計數差,使慢的機器收到更少請求
不支持權重,在容量規劃時,不能通過權重把壓力導向一台機器壓測容量
一致性Hash,相同參數的請求總是發到同一提供者,當某一台提供者掛時,原本發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引起劇烈變動
壓力分攤不均
Failover
Failfast
Failsafe
Failback
Forking
Broadcast
失敗自動切換,當出現失敗,重試其它伺服器,通常用於讀操作(推薦使用)
重試會帶來更長延遲
快速失敗,只發起一次調用,失敗立即報錯,通常用於非冪等性的寫操作
如果有機器正在重啟,可能會出現調用失敗
失敗安全,出現異常時,直接忽略,通常用於寫入審計日誌等操作
調用信息丟失
失敗自動恢復,後台記錄失敗請求,定時重發,通常用於消息通知操作
不可靠,重啟丟失
並行調用多個伺服器,只要一個成功即返回,通常用於實時性要求較高的讀操作
需要浪費更多服務資源
廣播調用所有提供者,逐個調用,任意一台報錯則報錯,通常用於更新提供方本地狀態
速度慢,任意一台報錯則報錯
封裝多個提供者的路由及負載均衡,並橋接注冊中心
以Invoker為中心,擴展介面為Cluster, Directory, Router, LoadBalance
Cluster選擇
Router選擇
路由規則
容器
RPC調用次數和調用時間監控
以Statistics為中心,擴展介面為MonitorFactory, Monitor, MonitorService
Dubbo協議
Rmi協議
Hessian協議
連接個數:單連接
連接方式:長連接
傳輸協議:TCP
傳輸方式:NIO非同步傳輸
序列化:Hessian二進制序列化
適用范圍:傳入傳出參數數據包較小(建議小於100K),消費者比提供者個數多,單一消費者無法壓滿提供者,盡量不要用bbo協議傳輸大文件或超大字元串。
適用場景:常規遠程服務方法調用
採用NIO復用單一長連接,並使用線程池並發處理請求,減少握手和加大並發效率,性能較好(推薦使用)
適合於小數據量大並發的服務調用,以及服務消費者機器數遠大於服務提供者機器數的情況
Dubbo預設協議不適合傳送大數據量的服務,比如傳文件,傳視頻等,除非請求量很低
Dubbo協議預設每服務每提供者每消費者使用單一長連接,如果數據量較大,可以使用多個連接
為防止被大量連接撐掛,可在服務提供方限制大接收連接數,以實現服務提供方自我保護
在大文件傳輸時,單一連接會成為瓶頸
總結
可與原生RMI互操作,基於TCP協議
偶爾會連接失敗,需重建Stub
參數及返回值需實現Serializable介面
參數及返回值不能自定義實現List, Map, Number, Date, Calendar等介面,只能用JDK自帶的實現,因為hessian會做特殊處理,自定義實現類中的屬性值都會丟失
連接個數:多連接
連接方式:短連接
傳輸協議:HTTP
傳輸方式:同步傳輸
序列化:Hessian二進制序列化
適用范圍:傳入傳出參數數據包較大,提供者比消費者個數多,提供者壓力較大,可傳文件
適用場景:頁面傳輸,文件傳輸,或與原生hessian服務互操作
提供者用Dubbo的Hessian協議暴露服務,消費者直接用標准Hessian介面調用
或者提供方用標准Hessian暴露服務,消費方用Dubbo的Hessian協議調用
基於Hessian的遠程調用協議
可與原生Hessian互操作,基於HTTP協議
需hessian.jar支持,http短連接的開銷大
Hessian協議用於集成Hessian的服務,Hessian底層採用Http通訊,採用Servlet暴露服務,Dubbo預設內嵌Jetty作為伺服器實現
可以和原生Hessian服務互操作
總結
約束
封裝RPC調用
以Invocation, Result為中心,擴展介面為Protocol, Invoker, Exporter
選擇
封裝請求響應模式,同步轉非同步
以Request, Response為中心,擴展介面為Exchanger, ExchangeChannel,ExchangeClient, ExchangeServer
Netty
Mina
Grizzly
性能較好(推薦使用)
一次請求派發兩種事件,需屏蔽無用事件
老牌NIO框架,穩定
待發送消息隊列派發不及時,大壓力下,會出現FullGC
Sun的NIO框架,應用於GlassFish伺服器中
線程池不可擴展,Filter不能攔截下一Filter
抽象mina和netty為統一介面
以Message為中心,擴展介面為Channel, Transporter, Client, Server, Codec
選擇
Hessian
Dubbo
Json
Java
性能較好,多語言支持(推薦使用)
Hessian的各版本兼容性不好,可能和應用使用的Hessian沖突,Dubbo內嵌了hessian3.2.1的源碼
通過不傳送POJO的類元信息,在大量POJO傳輸時,性能較好
當參數對象增加欄位時,需外部文件聲明
純文本,可跨語言解析,預設採用FastJson解析
性能較差
Java原生支持
性能較差
可復用的一些工具
擴展介面為Serialization, ObjectInput, ObjectOutput, ThreadPool
選擇
Business
RPC
Remoting
Service
Config
Proxy
Registry
Cluster
Monitor
Protocol
Exchange
Transport
Serialize
層次結構
層說明