Kafka 集群架構與高可用方案設計(二)

Kafka 集群架構與高可用方案的優化策略

合理配置參數

在 Kafka 集群的配置中,參數的合理設置對于系統的高可用性和性能表現起著關鍵作用。例如,min.insync.replicas參數定義了 ISR(In-Sync Replicas,同步副本)集合中的最少副本數,它直接關系到數據的持久性和一致性 。當acks設置為all或-1時,生產者需要等待 ISR 中的所有副本都確認寫操作后才認為成功,此時min.insync.replicas才會生效。如果將min.insync.replicas設置為 1,雖然系統的寫入性能可能會有所提升,但數據的可靠性會降低,因為只要有一個副本(通常是 Leader 副本)確認寫入,生產者就會認為寫入成功,一旦這個唯一確認的副本出現故障,數據就有可能丟失。為了提高數據的可靠性,建議將min.insync.replicas設置為大于 1 的值,比如在一個三副本的集群中,可以將其設置為 2,這樣可以確保至少有兩個副本同步了數據,即使其中一個副本出現故障,數據仍然是安全的。但如果設置過高,比如將min.insync.replicas設置為等于副本數,一旦有任何一個副本出現故障,ISR 中的副本數量就會低于min.insync.replicas的要求,此時生產者將無法寫入數據,從而降低了系統的可用性。因此,在設置min.insync.replicas時,需要根據實際的業務需求和數據持久性要求來進行權衡。

unclean.leader.election.enable參數則控制著 Kafka 是否可以選舉非 ISR 中的副本為 Leader。在默認情況下,該參數的值為false,這意味著只有 ISR 中的副本才有資格被選為新的 Leader,這樣可以保證數據的一致性,因為 ISR 中的副本都是與 Leader 保持同步的。但在某些極端情況下,比如 ISR 中的所有副本都宕機了,如果unclean.leader.election.enable設置為false,那么該分區將無法選舉出新的 Leader,從而導致服務不可用。而將其設置為true,雖然可以提高 Kafka 的可用性,使得分區 Leader 副本一直存在,不至于停止對外提供服務,但會降低數據的可靠性,因為非 ISR 中的副本可能與 Leader 副本的數據不一致,選舉這樣的副本為 Leader 可能會導致數據丟失。因此,在決定是否啟用unclean.leader.election.enable時,需要仔細評估業務對數據一致性和可用性的要求。

定期監控與維護

定期監控與維護是確保 Kafka 集群持續穩定運行的關鍵措施。通過 Kafka 提供的豐富監控指標和詳細日志,我們可以深入了解集群的運行狀態,及時發現并解決潛在問題。Kafka 的 JMX(Java Management Extensions)接口為我們提供了一個強大的監控工具,我們可以使用 JConsole、Java Mission Control 等工具連接到 Kafka Broker 的 JMX 端口,實時監控各種關鍵指標,如吞吐量、延遲、磁盤使用率、網絡連接數等。這些指標就像是 Kafka 集群的 “健康指標”,通過對它們的監測,我們可以及時發現集群中可能存在的性能瓶頸或故障隱患。例如,如果發現某個 Broker 節點的磁盤使用率持續過高,可能是由于該節點上存儲的消息過多,導致磁盤空間不足,這時就需要及時清理過期的消息,或者增加磁盤空間,以避免因磁盤滿而導致的服務異常。

除了使用 JMX 監控,還可以借助第三方監控工具,如 Prometheus 和 Grafana。Prometheus 是一個流行的開源監控解決方案,它可以高效地收集和存儲 Kafka 的指標數據,而 Grafana 則是一個功能強大的數據可視化平臺,能夠與 Prometheus 等數據源集成,幫助我們創建自定義的 Kafka 監控儀表盤。通過這些工具,我們可以直觀地看到 Kafka 集群的各項指標的變化趨勢,設置合理的閾值,當指標超出閾值時及時發出報警,以便及時采取措施進行處理。例如,當發現某個 Topic 的消息堆積數量持續增加,超過了設定的閾值時,就需要檢查消費者的消費速度是否過慢,或者是否存在消費者故障等問題,及時調整消費者的配置或修復故障,以避免消息堆積過多導致的系統性能下降。

定期檢查 Kafka 集群的錯誤日志也是非常重要的。錯誤日志中包含了大量關于集群運行過程中出現的問題的信息,通過對這些信息的分析,我們可以快速定位故障原因,并采取相應的解決方案。比如,如果在日志中發現頻繁的 Leader 選舉記錄,可能是由于某些 Broker 節點的穩定性問題導致的,這時就需要檢查這些節點的硬件狀態、網絡連接等,找出問題所在并進行修復,以減少 Leader 選舉的次數,提高系統的穩定性。

多數據中心部署

在當今復雜多變的分布式系統環境下,為了進一步提升系統的整體可用性,多數據中心部署 Kafka 集群成為了一種重要的方案。通過在不同的數據中心部署 Kafka 集群,我們可以實現跨區域容災,確保在某個數據中心發生故障時,系統仍然能夠正常運行。例如,在一個跨國企業的業務系統中,可能會在亞洲、歐洲和美洲的數據中心分別部署 Kafka 集群。當亞洲的數據中心因為自然災害、網絡故障或其他原因無法正常工作時,歐洲和美洲的數據中心可以繼續承擔業務的消息處理任務,保證業務的連續性。

多數據中心部署的 Kafka 集群有多種模式,其中比較常見的有 Hub 架構、雙活架構和主備架構。Hub 架構是指一個中心的 Kafka 集群作為中央調度,對應多個本地的 Kafka 集群。這種架構的優點是只有本地用到的數據就在本地使用,多個數據中心需要用到的數據就放在中央,從本地同步到遠程的次數也就只有一次,這樣讀取的時候,需要本地的就本地讀,否則遠程讀,消費者只需要從一個集群讀數據即可。但缺點是一個數據中心的不能訪問另一數據中心的數據。雙活架構則是多個集群之間保持數據同步,當一個集群掛掉時,可以直接轉向另外一個,而且可以就近提供服務。然而,這種架構在集群之間同步數據時需要解決如何避免沖突、保證數據一致性的問題。主備架構有兩個集群,平常只用主集群,另外一個集群只有當主集群出了問題才用。這種架構的優點是不需要擔心數據訪問和沖突問題,但存在一個集群的資源浪費,同時需要考慮備份的量的問題,以及恢復的過程中是否可以重復數據或者丟失部分數據 。

在實際應用中,需要根據業務的具體需求和特點來選擇合適的多數據中心部署模式。同時,還需要考慮數據同步、網絡延遲、數據一致性等多方面的問題,通過合理的配置和優化,充分發揮多數據中心部署的優勢,提高 Kafka 集群的高可用性和可靠性,為企業的關鍵業務提供堅實的支持。

實際案例分析

案例背景介紹

某大型電商平臺在業務飛速發展的過程中,面臨著海量訂單數據處理和實時數據分析的巨大挑戰。每天,該平臺產生的訂單數量高達數百萬,這些訂單數據不僅包含了訂單的基本信息,如訂單編號、商品詳情、用戶信息、支付金額等,還涉及到訂單的狀態變化,如創建、支付、發貨、收貨等。同時,平臺還需要實時收集和分析用戶在瀏覽商品、添加購物車、搜索商品等過程中產生的行為數據,以優化用戶體驗、精準推薦商品和制定營銷策略。

面對如此龐大的數據規模和復雜的業務需求,該電商平臺對系統的性能和可靠性提出了極高的要求。在數據處理的及時性方面,要求能夠在秒級甚至毫秒級的時間內完成訂單數據的處理和入庫,確保訂單狀態的及時更新,避免因為處理延遲導致用戶體驗下降或業務流程受阻。在數據的可靠性上,任何訂單數據和用戶行為數據都不能丟失,因為這些數據對于平臺的業務分析、運營決策以及用戶權益保障都至關重要。而且,隨著業務的不斷增長,系統需要具備良好的擴展性,能夠輕松應對數據量的持續攀升。

集群架構搭建

為了滿足上述業務需求,該電商平臺搭建了一個規模龐大且精心設計的 Kafka 集群。在這個集群中,總共部署了 10 個 Broker 節點,這些節點分布在不同的服務器上,通過高速網絡相互連接,共同構成了一個強大的消息處理網絡。每個 Broker 節點都配備了高性能的 CPU、大容量的內存和高速的磁盤存儲,以確保能夠高效地處理和存儲海量的消息數據。

在 Topic 的設計上,根據業務的不同類型和功能,創建了多個針對性的 Topic。例如,專門創建了 “orders” Topic 用于存儲訂單相關的數據,“user_behavior” Topic 用于收集用戶行為數據,“system_logs” Topic 用于記錄系統運行過程中的各種日志信息等。每個 Topic 都根據數據量和處理需求進行了細致的 Partition 劃分。以 “orders” Topic 為例,由于訂單數據量巨大且對處理的并行性要求高,將其劃分為 50 個 Partition,這樣可以充分利用多個 Broker 節點的資源,實現訂單數據的并行處理,大大提高處理效率。

在副本配置方面,為了確保數據的高可靠性和容錯性,每個 Partition 都設置了 3 個副本。這些副本分布在不同的 Broker 節點上,形成了數據冗余。當某個 Broker 節點出現故障時,其他節點上的副本可以迅速接替工作,保證數據的完整性和服務的連續性。例如,如果 “orders” Topic 的某個 Partition 的 Leader 副本所在的 Broker 節點突然宕機,Kafka 會立即從該 Partition 的其他兩個 Follower 副本中選舉出一個新的 Leader 副本,繼續處理訂單數據的讀寫請求,整個選舉過程和切換過程對于上層應用來說幾乎是透明的,不會對業務的正常運行產生明顯影響。

高可用方案實施

在這個電商平臺的 Kafka 集群中,實施了一系列嚴格且有效的高可用方案。在 ISR 配置方面,根據業務對數據一致性和可用性的要求,合理設置了相關參數。例如,將min.insync.replicas參數設置為 2,這意味著在 ISR 集合中必須至少有 2 個副本與 Leader 副本保持同步,生產者才會認為消息發送成功。這樣的設置在保證數據一致性的同時,也提高了系統的容錯能力。當某個 Follower 副本由于網絡故障或其他原因暫時無法與 Leader 副本同步時,只要 ISR 集合中還有另一個副本保持同步,系統就可以繼續正常運行,不會影響消息的生產和消費。

在故障轉移策略上,Kafka 的自動故障轉移機制發揮了關鍵作用。當某個 Broker 節點發生故障時,Controller 會迅速檢測到這一情況,并立即啟動新的 Leader 選舉流程。在選舉過程中,Controller 會優先從 ISR 集合中選擇與原 Leader 副本同步狀態最好、日志偏移量最大的 Follower 副本作為新的 Leader。例如,當 “user_behavior” Topic 的某個 Partition 的 Leader 副本所在的 Broker 節點出現故障時,Controller 會從該 Partition 的 ISR 集合中的兩個 Follower 副本中,選擇日志偏移量最大的那個副本作為新的 Leader。一旦新的 Leader 選舉成功,Controller 會及時更新 Kafka 集群的元數據信息,并通知所有的生產者和消費者。生產者在發送消息時,會根據更新后的元數據信息,將消息發送到新的 Leader 副本所在的 Broker;消費者在拉取消息時,也會根據新的元數據找到對應的 Leader 副本進行拉取。

通過實施這些高可用方案,該電商平臺的 Kafka 集群在面對各種故障和異常情況時,都能夠保持穩定的運行狀態。在過去的一年中,盡管經歷了多次服務器硬件故障、網絡波動等問題,但 Kafka 集群的可用性始終保持在 99.9% 以上,幾乎沒有出現因為集群故障導致的業務中斷情況。這不僅保障了訂單數據和用戶行為數據的可靠傳輸和處理,也為電商平臺的實時數據分析和業務決策提供了堅實的數據基礎,有力地支撐了平臺業務的持續高速發展,提升了用戶體驗和平臺的市場競爭力。

總結與展望

總結 Kafka 集群架構與高可用方案的核心要點

Kafka 集群架構憑借其精妙的設計和強大的功能,在分布式系統領域占據著舉足輕重的地位。Broker 節點作為集群的基礎單元,承擔著消息存儲與處理的重任,多個 Broker 協同工作,構建起了一個強大的消息處理網絡。Topic 與 Partition 的設計,實現了消息的分類管理和物理分割,不僅方便了消息的組織和處理,還為 Kafka 的高吞吐量和水平擴展提供了有力支持。Replication 副本機制則是數據可靠性和高可用性的堅實保障,通過在不同 Broker 節點上存儲多個副本,確保了即使部分節點出現故障,數據也不會丟失,服務依然能夠正常運行。

在消息的生產和消費流程中,Producer 和 Consumer 扮演著關鍵角色。Producer 通過合理的分區策略將消息發送到指定的 Partition,確保消息能夠被高效地存儲和處理;Consumer 則通過訂閱 Topic,從 Partition 中拉取消息進行處理,實現了消息的消費和業務邏輯的執行。而 Consumer Group Management 和 Metadata Service 則分別負責管理消費者組和維護集群的元數據信息,為 Kafka 集群的穩定運行提供了重要的支持和保障。

Kafka 的高可用方案設計同樣亮點紛呈。分區副本機制通過多副本的方式,保證了數據的冗余和一致性,即使某個副本出現故障,其他副本也能繼續提供服務。ISR 機制則通過動態管理與 Leader 副本保持同步的副本集合,確保了在 Leader 副本發生故障時,能夠從 ISR 集合中選舉出一個可靠的新 Leader,從而保證數據的一致性和系統的可用性。自動故障轉移機制則是 Kafka 高可用性的最后一道防線,當 Leader 副本出現故障時,能夠迅速自動地選舉出新的 Leader,確保服務的連續性,這個過程對于用戶來說幾乎是透明的,極大地提高了系統的可用性和穩定性。

為了進一步提升 Kafka 集群的性能和可靠性,我們還可以采取一系列優化策略。合理配置參數,如min.insync.replicas、unclean.leader.election.enable等,可以根據實際業務需求,在數據一致性和可用性之間找到最佳平衡點。定期監控與維護,通過 Kafka 提供的豐富監控指標和詳細日志,及時發現并解決潛在問題,確保集群的穩定運行。多數據中心部署則可以實現跨區域容災,進一步提升系統的整體可用性,確保在某個數據中心發生故障時,系統仍然能夠正常運行。通過這些優化策略的實施,Kafka 集群能夠更好地滿足企業在不同場景下的業務需求,為企業的數字化轉型提供強大的技術支持。

展望未來 Kafka 在分布式系統中的發展趨勢

隨著分布式系統技術的不斷演進和業務需求的日益增長,Kafka 作為分布式消息系統的佼佼者,未來在技術創新和應用場景拓展方面都有著廣闊的發展空間。

在技術創新方面,Kafka 有望在多個關鍵領域取得突破。Kafka 的流處理能力將得到進一步增強,KSQL 和 Kafka Streams 作為 Kafka 提供的流處理框架,未來會有更多的增強功能和性能優化。例如,KSQL 可能會支持更復雜的 SQL 語法和函數,能夠處理更加復雜的流處理任務,如實時數據聚合、窗口計算、數據關聯等,這將使得開發人員能夠更方便地對實時數據進行處理和分析,為企業的實時決策提供更強大的數據支持。

隨著 Kubernetes 等容器編排工具的普及,Kafka 在云原生環境中的部署和管理將變得更加容易。未來,Kafka 對 Kubernetes 及其他云原生平臺的支持將更加完善,包括更簡單的部署方式、更高效的資源利用以及更強的彈性擴展能力。這將使得企業能夠更輕松地將 Kafka 集成到云原生架構中,充分利用云原生技術的優勢,實現應用的快速部署、彈性擴展和高效管理。

為了滿足多租戶環境下的應用需求,Kafka 將繼續增強其安全性和隔離性。通過更細粒度的訪問控制和配額管理,Kafka 可以確保不同租戶之間的數據和資源隔離,防止數據泄露和資源濫用。同時,Kafka 還將提供更好的審計和監控功能,便于管理員對多租戶環境進行管理和維護,保障系統的安全穩定運行。

運維和監控是 Kafka 使用中的重要方面,未來 Kafka 將繼續提升其運維和監控工具的能力。例如,Kafka Manager、Confluent Control Center 等工具的功能將得到增強,能夠提供更全面、更直觀的集群管理和監控功能。同時,Kafka 與 Prometheus、Grafana 等主流監控系統的集成也將更加緊密,實現對 Kafka 集群的實時監控和報警,幫助運維人員及時發現并解決問題,確保集群的高效運行。

Kafka 的存儲引擎也在不斷演進,分層存儲(Tiered Storage)技術是一個重要的發展方向。通過將數據分層存儲到不同的存儲介質上,如本地磁盤和云存儲,Kafka 可以根據數據的訪問頻率和重要性,將熱點數據存儲在高速的本地磁盤上,將冷數據存儲在成本較低的云存儲上,從而降低存儲成本并提高存儲效率,更好地滿足企業對大規模數據存儲的需求。

在應用場景拓展方面,Kafka 將在更多領域發揮重要作用。隨著物聯網(IoT)的快速發展,大量的設備數據需要進行實時處理和分析。Kafka 憑借其高吞吐量、低延遲的特性,能夠很好地滿足物聯網場景下對數據處理的需求,未來有望在物聯網領域得到更廣泛的應用。例如,在智能家居系統中,Kafka 可以實時收集和處理各種設備的狀態數據、用戶的操作數據等,為用戶提供智能化的家居體驗。

在邊緣計算場景中,Kafka 也將大有可為。邊緣計算強調在數據源附近進行數據處理,以減少數據傳輸延遲和帶寬消耗。Kafka 可以在邊緣節點上部署,實現對邊緣數據的實時采集、處理和轉發,為邊緣計算提供強大的消息處理能力。例如,在工業自動化場景中,Kafka 可以實時處理來自各種傳感器和設備的數據,實現設備的實時監控和故障預警。

Kafka 還可能在人工智能、區塊鏈等新興領域與相關技術進行深度融合。在人工智能領域,Kafka 可以作為數據管道,將訓練數據實時傳輸給人工智能模型,實現模型的實時訓練和更新;在區塊鏈領域,Kafka 可以用于區塊鏈節點之間的消息傳遞和數據同步,提高區塊鏈系統的性能和可擴展性。這些新興領域的應用拓展,將進一步推動 Kafka 技術的發展和創新,為企業創造更多的價值。

Kafka 集群架構與高可用方案的設計和優化是一個持續演進的過程。作為技術愛好者和從業者,我們應保持敏銳的技術洞察力,緊跟 Kafka 的發展步伐,不斷學習和探索新的技術和應用場景,將 Kafka 的優勢充分發揮出來,為分布式系統的發展貢獻自己的力量。無論是在大數據處理、實時流計算,還是在新興的物聯網、邊緣計算等領域,Kafka 都有著巨大的潛力和廣闊的應用前景,讓我們共同期待 Kafka 在未來能夠創造更多的精彩!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85329.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

47-Oracle ASH報告解讀

上一期生成了ASH報告后,就需要解讀報告關鍵信息。ASH的使用可以快速定位瞬時性能問題。生產環境的場景時間緊、任務重,但是必須要結合具體業務分析,同時借助其他工具做報告做趨勢分析。 一、ASH 技術原理? ?1. 核心機制? ?采樣原理?&a…

“本地化思維+模塊化體驗”:一款輕量數據中心監控系統的真實測評

“本地化思維模塊化體驗”:一款輕量數據中心監控系統的真實測評 在數據中心運維逐步精細化的今天,一款真正貼合本地用戶習慣、設計有溫度的系統并不多見。近期體驗了一款功能全面、邏輯清晰的監控平臺,給人留下了深刻印象。并不是廣。今天就從…

詞編碼模型有哪些

詞編碼模型有哪些 詞編碼模型在高維向量空間的關系解析與實例說明 如Word2Vec、BERT、Qwen等 一、高維向量空間的基礎概念 詞編碼模型(如Word2Vec、BERT、Qwen等)的核心是將自然語言符號映射為稠密的高維向量,使語義相近的詞匯在向量空間中位置接近。以Qwen模型為例,其…

elementui el-select 獲取value和label 以及 對象的方法

獲取 el-select 的 value 和 label 值 在 Element UI 的 el-select 組件中,可以通過以下方法獲取選項的 value 和 label 值。 1、綁定 v-model 獲取 value el-select 通常通過 v-model 綁定 value 值,直接訪問綁定的變量即可獲取當前選中的 value。…

樹莓派與嵌入式系統實驗報告

一、Linux 系統編譯工具鏈實踐:mininim 源碼編譯 虛擬機 Ubuntu 編譯流程 環境配置問題 編譯時遇到虛擬機無法聯網的情況,通過連接個人熱點解決(校園網限制導致無法訪問外部資源)。 執行 ./bootstrap 時報錯 gnulib-tool: command…

IDEA部署redis測試

新建springboot,項目改為:testredis E:\ideaproject\testredis\src\main\java\org\example\testredis\TestredisApplication.java 代碼為: package org.example.testredis;import org.springframework.boot.SpringApplication; import org.…

旅游服務禮儀實訓室:從歷史演進到未來創新的實踐探索

一、旅游服務禮儀實訓室的歷史演進:從禮制規范到職業化培養 旅游服務禮儀實訓室的建設并非一蹴而就,其發展歷程與人類對禮儀認知的深化及職業教育體系的完善密切相關。 1. 古代禮儀教育的萌芽 禮儀作為社會行為規范,最早可追溯至中國夏商周…

Could not find a declaration file for module ‘..XX‘.

1. 添加 Vue 聲明文件 如果您還沒有為 .vue 文件創建類型聲明,可以通過創建一個新的類型聲明文件來解決該問題。 步驟: 在您的項目根目錄下創建一個名為 shims-vue.d.ts 的文件(您可以選擇其他名稱,但建議使用常見名稱以便于識…

OpenCV CUDA模塊設備層-----反正切(arctangent)函數atan()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 對輸入的 uchar1 像素值(范圍 [0, 255]),先歸一化到 [0.0, 1.0] 浮點區間,然后計算其反正切值 at…

java中常見的排序算法設計介紹

排序算法 復雜度原地排序冒泡排序算法邏輯時間復雜度:最好O(n),最壞和平均O(n^2)冒泡排序:穩定性算法 選擇排序算法邏輯時間復雜度:最好,最壞和平均都是O(n^2)選擇排序:不穩定性算法 插入排序算法邏輯時間復雜度:最好O…

深度學習系列81:MCP快速上手

MCP 是一種開放協議,通過標準化的服務器實現,使 AI 模型能夠安全地與本地和遠程資源進行交互。MCP 可幫助你在 LLM 之上構建智能代理和復雜的工作流。MCP 采用客戶端-服務器架構,主機應用程序可以連接到多個服務器。 這里用個demo展示一下如何…

【Python機器學習(一)】NumPy/Pandas手搓決策樹+使用Graphviz可視化(以西瓜書數據集為例)

下題來源于筆者學校的《模式識別與機器學習》課程的作業題,本文將通過使用NumPy處理數學運算,Pandas處理數據集,Graphviz實現決策樹可視化等Python庫來實現決策樹算法及其格式化。 導入用到的Python庫: import numpy as np import pandas as pd from graphviz import Digr…

react-activation 組件級緩存解決方案

文章目錄 一、KeepAlive 組件二、AliveScope 容器三、useAliveController Hook四、生命周期五、完整示例 react-activation 主要解決 React 項目中的「頁面緩存」需求(是第三方庫&#xff0c;非React 官方)&#xff0c;類似于 Vue 中的 <KeepAlive>&#xff1a; 功能說明…

CentOS 7內核升級方案

關于升級 CentOS 7 系統內核至 4.19 版本的可執行升級方案,可根據實際情況進行調整和完善,希望能對大家有所幫助: 一、升級背景與目的 隨著業務的發展和系統穩定性的要求,當前 CentOS 7 系統所使用的內核版本 3.10.0-1160.el7.x86_64 已經無法滿足部分新功能需求以及面臨…

樹莓派實驗實踐記錄與技術分析

一、內核驅動開發&#xff1a;hello 模塊實現 驅動程序代碼 #include <linux/init.h> #include <linux/module.h> static int __init hello_init(void) { printk(KERN_INFO "hello kernel\n"); return 0; } module_init(hello_init); static void …

【秦九紹算法】小紅的 gcd

題目 牛客網&#xff1a;小紅的 gcd 題目分析 我們知道&#xff0c;求gcd就用歐幾里得算法&#xff08;輾轉相除法&#xff09;&#xff1a;gcd(a,b)gcd(b,a mod b)。但是這題的a非常大&#xff0c;最大是一個1e6位數&#xff0c;無法使用任何數據類型存儲。如果使用高精度…

AWS服務監控之EC2內存監控

首先在IAM里找到角色&#xff0c;創建角色&#xff0c;選擇EC2 然后在被監控的機器上安裝cloudwatch-agent 官方鏈接在本地服務器上安裝 CloudWatch 代理 - Amazon CloudWatch wget https://s3.amazonaws.com/amazoncloudwatch-agent/redhat/amd64/latest/amazon-cloudwatch-a…

鴻蒙 ArkWeb 和 H5混編開發

ArkWeb Web 相關標準技術(HTML/CSS/JS)&#xff0c;是業內支持性最廣泛的技術&#xff0c;可以在最廣泛的平臺下實現“一次編寫到處運行”&#xff1b;大部分對性能無需極致要求的應用頁面&#xff0c;都可以使用 Web 技術來實現。 鴻蒙 ArkWeb Kit&#xff08;方舟 Web&…

設計模式-迪米特法則(Law of Demeter, LoD)

迪米特法則&#xff08;Law of Demeter, LoD&#xff09; 別名&#xff1a;最少知識原則&#xff08;Least Knowledge Principle&#xff09; 核心思想&#xff1a;一個對象應盡可能少地與其他對象發生交互&#xff0c;只與直接的朋友&#xff08;成員變量、方法參數、方法返回…

python獲取AB直線間任意一點經緯度

獲取AB直線間任意一點經緯度 1、目標 已知A點經緯度,距離;B點經緯度,距離,如果C點在AB之間,且知道C點距離,求C點的經緯度信息。 目標:在AB這條直線上,根據給定的距離(從A點開始沿直線到某點的距離)來求該點的經緯度。 2、方法 首先計算AB的總長度(大圓距離),…