[研討會心得][COSCUP] COSCUP 2016 上台初體驗

前提: 今年是第三年參加 COSCUP ,其實也有些時候沒有參加任何的研討會.大概是因為已經給自己立定想法,必須要有想辦法當講者才能參加的信念. 而今年 COSCUP 我覺得議題都很不錯,可惜我因為要顧小孩只能參加第二天的場次(也是因為自己的場次在第二天). 參與場次: Evan Lin - Project 52 每週一個小專案來學習Golang Slide: COSCUP 2016: Project 52 每週一個小專案來學習 Golang from Evan Lin 詳細的 Hackpad 在這裡,不少同學有做了一些筆記 . 影片: 鏈結在這裡 講者心得: 第一次參與大型研討會,加上是 H0 有點大 XD ,說不緊張是不可能的. 一緊張就容易講得快,所以大概在 25 分鐘就把所有 slide 都講完了. 後面的時候還好有 appleboy 的救援與講解一些心得. 以下整理一些心得: 盡量準備多一點的 slide ,往往一張 slide 很難講到一分鐘.所以基本上應該要兩倍以上. 每張 slide 之間需要讓自己喘一口氣,避免讓台下的人也吸收不良. 如果想講一些 “木更” 也請記得慢慢講,讓台下的人有時間笑 (或是不笑 orz ) 身為講者,其實都會很希望能跟聽眾互動.如果沒有辦法提問題,就算是結束後,你來講一句話也好.也期勉自己以後參加任何研討會都要想辦法跟講者互動. Appleboy - 用 Golang 寫 Microservice slide: Write microservice in golang from Bo-Yi Wu 影片: 鏈結在這裡 心得: 這場是我當主持的, Appleboy 幫我把許多 Golang 的概念與基礎介紹都講得相當清楚.如果你想了解如何寫 Golang ,很建議好好的閱讀他的 slide . Jason Lin, Sas Chen - A High Scale ML Platform Using SPARK and KAFKA 內容: 擷取自 Hackpad (其實不少都是我打的 :p ) Batch Processing Recommendation Alternating Least Sq Log Regression GBDT Clustering Top-k rank Text mining naive bayes latent dirichlet allocation word2vec Streaming Data Original: product id -> get inventory -> update inventory Using multiple thread: Cannot promise the threading ordering. Kafka also requires key partitioning...
繼續閱讀

[TIL] 關於 Docker Remote API 的學習

什麼是 Docker Remote API 每個 Docker Daemon 其實都有提供 Remote API .其工作主要都是提供一個介面可以讓 Docker Client 透過 API 來控制. 舉凡大家日常使用的指令 docker images 或是 docker ps 其實都是使用 Docker Remote API 的方式來連接本地端的 Daemon 來對 Docker Daemon Service 下指令. 此外, docker-machine 對於遠端的機器也是透過 Docker Remote API 的方式. 如何在 Mac OSX for Docker 使用 Docker Remote API 尋找 Docker-Machine Certificate 當你使用 Docker-Machine 來建置機器的時候,其實你的 Certificate 會存放在 /Users/YOUR_USERNAME/.docker/machine/machines 裡面. 該 Certificate 就是存放著讓 Docker Client 與 Docker Daemon 能夠相互溝通的金鑰資訊. 舉個例子: 如果你有建立一個 Docker-Machine 的機器名稱為 default,那麼 Certificate 檔案就會存放在: /Users/YOUR_USERNAME/.docker/machine/machines/default 裡面. 透過 curl 連接 Docker Remote API 以我的名稱 Evan 的作為一個範例的話: ### Set your environment variable > export DOCKER_CERT_PATH=/Users/Evan/.docker/machine/machines/default ### Get Docker Machine IP > docker-machine ip default 192.168.99.100 ## Use CURL > curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.pem --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem curl: (58) SSL: Can't load the certificate "/Users/Evan/.docker/machine/machines/default/cert.pem" and its private key: OSStatus -25299 如果出現以下的錯誤: curl: (58) SSL: Can't load the certificate "/Users/Evan/.docker/machine/machines/default/cert.pem" and its private key: OSStatus -25299 代表你沒有 cert.pem 需要執行額外的 key 轉換的動作...
繼續閱讀

[TIL] 搞清楚三種 Docker SWarm 的差異

原文 Comparing Swarm, Swarmkit and Swarm Mode 名詞解釋: Docker Swarm: 最原始的 Docker Swarm 需要透過 docker --swarm 來呼叫 Docker SwarmKit: 使用 Github 另外一個 Open Source Project docker/SwarmKit 做 Clustering orchestration. Docker SwarmNext: 也就是 Docker 1.12 之後系統內建的 Docker Swarm Mode (或稱為 Docker Swarm V2) TL;DR (直接告訴我差異)   Docker Swarm Swarm Kit Swarm Next (Swarm V2) 額外 K/V DB 需要 (progrium/consul) 內建 內建 Security None 內建 內建 額外安裝 不需要 需要額外安裝 binaries 不需要 Extra Service None Noone Routing Mesh, Load Balancer, Service Discovery Docker-Compose, Docker-Machine 支援 支援 支援 不支援 (目前) 關於最原始的 Docker Swarm 建立 Key-Value Service #Create Docker Machine docker-machine create -d virtualbox mh-keystore #Switch to taret docker-machine eval "$(docker-machine env mh-keystore)" #Start Consul Service docker run -d \ -p "8500:8500" \ -h "consul" \ progrium/consul -server -bootstrap 關於 SwarmKit 使用流程 請參考我的這篇文章,[TIL][Docker] Docker SwarmKit 學習紀錄 關於 Docker Swarm Next 請參考我的這篇文章,[TIL] Learning note about Docker Swarm Mode 參考鏈結 试用swarmkit [TIL] Learning note about Docker Swarm...
繼續閱讀

[TIL] Docker Live Restore: Docker 1.12 讓人驚艷的新功能

What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 from Docker, Inc. Docker 官方在 1.12 正式 Release 之後也放出了新的 Slide 來講解 1.12 新的功能: Docker Swarm Mode 無疑是最大的亮點,裡面的Routing Mesh可以讓任何節點都可以找到有 deploy 的 service 除此之外 Live Restore: (p.30) 這大概是 DockerCon 2016 之後新的功能,今天看到同事 Demo 後覺得相當有趣. 只要你在啟動 daemon 的時候加上 –live-restore 的參數. Docker Daemon 啟動的 Container 就可以把 Docker Daemon 殺掉,但是可以確保自己不會一併消失. 這樣就可以來 Container 來更新 Docker Daemon
繼續閱讀

[TIL] DPDK

What is DPDK DPDK(Data Plane Development Kit) Data Plane Development Kit 能大幅提升封包處理效能與傳輸量,讓資料層面應用程式享有更充裕的處理時間。 Data Plane Development Kit 可讓封包處理效能加快達十倍。於單一 Intel® Xeon® 處理器上便可實現超過 80 Mpps 的傳輸量,搭配雙處理器配置則可達雙倍。1 因此電信與網路設備製造商 (TEM 與 NEM) 可有效降低開發成本,動用更少工具與支援團隊,亦享有更快的上市時間。 (refer from Intel Website) DPDK Support NIC DPDK Supported NICs It could support on virtual driver “virtio-net”. Process: Bind DPDK (dpdk-devbind.py)to mount your network driver to DPDK driver list Use dpdk status (dpdk-devbind.py status) to query it. Use KNI (Kernel Network Interface) to enable that driver to eth0. If you use kni to enable DPDK to eth0, you can use all network function with DPDK benefit. kni will waste one CPU to relay DPDK driver data to eth0. Suggestion: Write DPDK related code directly. DPDK suitable for small cell but lots of data queue. Reference dpdk入门及环境准备 DPDK-NGINX vs NGINX – Tech Overview and Performance Testing Intel 加速分布式计算系统的三个神器
繼續閱讀

[TIL][Docker] Docker SwarmKit 學習紀錄

前言 其實之前就跑過一次,不過沒有記錄下來詳細的指令.這次為了比較 Docker Swarm , Docker Swarm Kit 還有 Docker Swarm Mode,又把整個流程跑了一次. 稍微做個紀錄. SwarmKit 使用流程 安裝 SwarmKit 由於 Open Source Project,需要另外安裝. go get -u github.com/docker/swarmkit cd $GOPATH/src/github.com/docker/swarmkit make binaries mv bin/* $GOBIN 注意: 如果你不是使用 Brew 安裝 Golang 你可能不會有 $GOBIN 參數,可以改到 $GOPATH/bin 建立 Cluster Master Node swarmd -d /tmp/node-1 --listen-control-api /tmp/manager1/swarm.sock --hostname node-1 要注意解釋一下,其中 /tmp/manager1/swarm.sock 是 SwarmKit socket 的位址.如果其他的 node 要加入,一定要將環境變數加入. export SWARM_SOCKET=/tmp/manager1/swarm.sock 然後我們來查詢,現在 Master 的 token (在新的 console) export SWARM_SOCKET=/tmp/manager1/swarm.sock swarmctl cluster inspect default >ID : 1piq7f9tr1xlmnui4xhjhsafi >Name : default >Orchestration settings: > Task history entries: 5 >Dispatcher settings: > Dispatcher heartbeat period: 5s >Certificate Authority settings: > Certificate Validity Duration: 2160h0m0s > Join Tokens: > Worker: >SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz > Manager: >SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-cdh5ucqp1xjvh3pp1rvs0two4 建立 Cluster Worker Node 節點 2 (Node2) swarmd -d /tmp/node-2 --hostname node-2 --join-addr 127.0.0.1:4242 --join-token SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz 其中注意, --join-token 一定要加入,不然會找不到.請使用查詢到的,勿用到我提供的 :p 節點 3 (Node3) swarmd -d /tmp/node-3 --hostname node-3 --join-addr 127.0.0.1:4242 --join-token SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz 確認節點都有建立成功 export SWARM_SOCKET=/tmp/manager1/swarm.sock swarmctl node ls 二...
繼續閱讀