[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之間,能達到上萬已經很不錯了。目前的門戶網站動輒幾千萬的訪問量,所以,高並發的系統架構在所難免。

閱讀更多

WOL (Wake On Lan) 網絡喚醒遠端開機功能-在外就能讓電腦開機

網路喚醒-在外就能讓電腦開機

因為在家裡有兩台PC 一台 Windows 10 及一台 Linux CentOS 7,不知道是機器太老還是電源問題,有時就給他突然掛了,回家時竟然看到他在休息,關機在那邊等按開機,後來上網找了一下資料,有關網路開機的方式找到了 WOL (Wake On Lan),所以想要來試試看,後來就設定好了,其實也不難,中間還有遇到一點問題,他的環境是在 LAN 下面執行的,但如果你在外面的話,就要用一些別的方式,如果家裡有分享器支援DMZ功能的話,那可以去設定外部IP指項到內部IP,但又另一個問題,如果你沒有固定IP的話,那就不行了,後來我是用一支沒有用的手機來做遠端 WOL(Wake On Lan),整理一下資料如下。

使用工具

  1. WOL 主機上的設定(Windows 10 / CentOS 7)
  2. Teamviewer HOST
  3. Wake On Lan (Android / 免費)

閱讀更多

MySQL InnoDB四個交易(Transaction)級別

MySQL InnoDB交易的隔離級別有四級,默認是“可重複讀”(REPEATABLE READ)

  1. 未提交讀(Read Uncommitted)
    另一個交易修改了數據,但尚未提交,而本交易中的SELECT會讀到這些未被提交的數據髒讀(Dirty read)( 隔離級別最低,並發性能高 )。
  2. 提交讀(Read Committed)
    本交易讀取到的是最新的數據(其他交易提交後的)。
    狀況是,在同一個交易裡,前後兩次相同的SELECT會讀到不同的結果不重複讀(Don’t repeat)
    會出現不重複讀(Don’t repeat)幻讀(Phantom read)問題(鎖定正在讀取的行)
  3. 可重複讀(Repeatable Read)
    在同一個交易裡,SELECT的結果是交易開始時時間點的狀態,因此,同樣的SELECT操作讀到的結果會是一致的。但是,會有幻讀(Phantom read)現象(稍後解釋)。會出幻讀(Phantom read)(鎖定所讀取的所有行)。
  4. 串行化(Serializable)
    讀操作會隱式獲取共享鎖,可以保證不同交易間的互斥(鎖表)。

閱讀更多

AWS 申請免費 t2.micro 主機流程

如何在AWS上建立一個免費的 Instances EC2 主機?

首先你需要先在AWS註冊一個帳號,還需要綁定你的信用卡(如果你超過他使用的免費額度,他會直接跟你收費)

免費的部份怎麼算呢? 你可以參考他的官網:https://aws.amazon.com/cn/free/

你可以開多個主機嗎? 是可以的,只要你的主機運行每個月不要超過 750 小時,他就不會跟你收費了。

流量的部份怎麼算? 這邊你在查一下,我也沒有認真在看 XD

接下包按照以下七個步驟。

閱讀更多

常用的Linux命令

最常用的Linux命令

1、cd命令

這是一個非常基本,也是大家經常需要使用的命令,它用於切換目前的目錄,它的參數是要切換到的目錄的路徑,可以是絕對路徑,也可以是相對路徑。如:

cd /root/Docements # 切換到目錄/root/Docements
cd ./path          # 切換到目前的目錄下的path目錄中,“.”表示目前的目錄
cd ../path         # 切換到上層目錄中的path目錄中,“..”表示上一層目錄

閱讀更多

如何在 MAC 上安裝 PHP Composer

下載 Composer v1.6.5

開啟 Mac Terminal 確認你的PHP 是否已經安裝了

# php -v
PHP 7.1.14 (cli) (built: Feb  7 2018 18:33:30) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

閱讀更多