CentOS 安裝 NSQ(分散式的即時消息服務平台) 及開機配制設定

NSQ(分散式的即時消息服務平台)

NSQ是一個基於Go語言的分散式即時消息平台,它基於MIT開源協議發佈,程式碼在GitHub,其當前最新版本是1.0.0版。NSQ可用於大規模系統中的即時消息服務,並且每天能夠處理數億級別的消息,其設計目標是為在分散式環境下進行的去除中心化服務提供一個強大的基礎架構。NSQ具有分散式、去除中心化的拓撲結構,該結構具有無單點故障、故障容錯、高可用性以及能夠保證消息的可靠傳遞的特徵。NSQ非常容易配置和部署,且具有最大的靈活性,支持眾多消息協議。另外,官方還提供了拆箱即用Go和Python庫。如果讀者興趣構建自己的客戶端的話,還可以參考官方提供的協議規範

閱讀更多

[Golang] 使用 yum 在 Centos 7 上安裝 Golang

使用 yum 在 Centos 7 上安裝 Golang

1、首先,先安裝EPEL :

[root@localhost tmp]# yum install epel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.xtom.com.hk
 * extras: mirror.xtom.com.hk
 * updates: mirror.xtom.com.hk
No package epel available.
Error: Nothing to do

如果已安裝過可以略過這個步驟

閱讀更多

Awesome Go Storage:Golang 開發可以用到的套件

Awesome Go Storage Awesome

這是在網路上找到的 golang 開發可以用到的套件,可以參考一下

Reference from: https://github.com/gostor/awesome-go-storage/blob/master/README.md

A curated list of awesome Go storage projects and libraries. Inspired by awesome-go.

Contributing

Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!

If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!

Contents

閱讀更多

[Golang] 使用 Group Cache 來寫一個 Image Server 範例

測試方式

go run groupcache.go -http=:8081 -groupcache-peers=:8082,:8083
go run groupcache.go -http=:8082 -groupcache-peers=:8081,:8083
go run groupcache.go -http=:8083 -groupcache-peers=:8081,:8082

開啟你的本地瀏覽器 http://localhost:8081/medium.jpg?width=100

這邊是可以看到你目前的狀態 http://localhost:8081/stats

你可以看到以下的資訊

{
  "Group": {
    "Gets": 2,
    "CacheHits": 1,
    "PeerLoads": 0,
    "PeerErrors": 1,
    "Loads": 1,
    "LoadsDeduped": 1,
    "LocalLoads": 1,
    "LocalLoadErrs": 0,
    "ServerRequests": 0
  },
  "Caches": {
    "Main": {
      "Bytes": 2762,
      "Items": 1,
      "Gets": 3,
      "Hits": 1,
      "Evictions": 0
    },
    "Hot": {
      "Bytes": 0,
      "Items": 0,
      "Gets": 2,
      "Hits": 0,
      "Evictions": 0
    }
  }
}

 

閱讀更多

XMPP協議相關基礎概念

1. XMPP
eXtensible Messaging and Presence Protocol可擴展消息處理和現場協議,用於在2個地點之間傳遞小型的結構化數據段的協議。定義了在兩個或更多痛心屍體之間傳遞數據所採用的格式。
2. XMPP服務器
為XMPP節提供路由。
3.應用
在XMPP內部,可以找到由聯繫人組成的花名冊,可以用它們來創建定向或無向社交圖。
當聯繫人上下線時自動發送出席通知,而個人消息和公共消息時XMLPP系統的基礎應用。
有時候開發人選選擇XMPP作為底層技術。
4. XMPP內部功能塊
構建發布-訂閱服務、多人聊天、表單檢索和處理、實時數據傳輸、隱私控制、遠程過程調用。
5. XMPP節
XMPP通信的端點以節為單位來處理輸入和產生輸出。
首先有個XMPP流,然後所有工作都是在這個流上發送和接收XMPP節實現的。
XMPP流有2份XML文檔組成,通信的每個方向均有1份。這些文檔的根節點是<stream:stream>。這個stream節點的子節點由“可陸游的節以及流相關的頂級節點”構成。每個節都是一個XML元素(包括它的子節點)。
XMPP節有3種:<presence>、<message>、<iq>。

閱讀更多

Strophe JS 說明

    • Strophe對像中
      • 命名空間
      • 連接狀態
      • 日誌
      • addConnectionPlugin 添加插件
      • forEachChild
        • 示例,解析Vcard節
      • isTagEqual
      • xmlescape,xmlunescape,serialize
      • escapeNode,unescapeNode
      • 與JID相關的幾個方法getNodeFromJid,getDomainFromJid,getResourceFromJid,getBareJidFromJid
    • Strophe.Builder
      • 示例
    • Strophe.Handler和trophe.TimeHandler
    • SASL
      • Strophe.SASLMechanism 驗證機制
    • Strophe.Connection
      • connect, disconnect斷開連接。
      • send(elem) 發送節, sendIQ(elem, callback, errback, ti​​meout) 發送IQ節
      • addHandler,deleteHandler,addTimedHandler,deleteTimedHandler
      • xmlInput,xmlOutput,rawInput,rawOutput
    • Strohpe.Websocket,Strophe.Bosh 和Strophe.Request

閱讀更多

[Golang] groupcache的簡單範例

大概介紹

其實關於groupcache的介紹網上非常的多,搜索出來清一色都是說的介紹,當然也有配圖如何部署,但是文字與配圖完全不在一個時空,圖也是copy國外的一篇博客。它不像其它的一些緩存數據庫有個服務端,需要客戶端去連接,文檔中明確說明了它就是一個程序庫,所以沒有服務端與客戶端這麼一說,換句話說,它本沒有服務端,又或者是人人都是服務端,食神的感覺油然而生。

主要代碼結構

它的代碼結構也比較清晰,代碼量也不是很大,很適合大家去閱讀學習。主要分為了consistenthash(提供一致性哈希算法的支持),lru(提供了LRU方式清楚緩存的算法),singleflight(保證了多次相同請求只去獲取值一次,減少了資源消耗),還有一些源文件:byteview.go 提供類似於一個數據的容器,http.go提供不同地址間的緩存的溝通的實現,peers.go節點的定義,sinks.go感覺就是一個開闢空間給容器,並和容器交互的一個中間人,groupcache.go整個源碼裡的大當家,其它人都是為它服務的。

閱讀更多

大型的網站網站應該由如下6個子系統架構

一個大型的網站網站應該由如下6個子系統組成

  1. 負載均衡系統
  2. 反向代理系統
  3. Web服務器系統
  4. 分佈式存儲系統
  5. 底層服務系統
  6. 數據庫集群系統

為什麼要做高並發系統設計?

事實上,針對於任何單一的網絡服務器程序,其可承受的同時連接數目是有理論峰值的,通過C++中對TSocket的定義類型:word,我們可以判定這個連接理論峰值是65535,也就是說,你的單個服務器程序,最多可以承受6萬多的用戶同時連接。但是,在實際應用中,能達到一萬人的同時連接並能保證正常的數據交換已經是很不容易了,通常這個值都在2000到5000之間,能達到上萬已經很不錯了。目前的門戶網站動輒幾千萬的訪問量,所以,高並發的系統架構在所難免。

閱讀更多