<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          刀耕火種 Debug?為什么不使用 Juno

          共 2013字,需瀏覽 5分鐘

           ·

          2020-07-27 19:43

          我們常常會思考為什么程序員每天各種查 bug。。。



          又或者各種 Debug。。。


          又或者各種艱難上線


          對于一個程序員而言,構建一個服務并不難,麻煩的是對服務的觀測和治理。如果沒有好的方法和工具,我們就只能刀耕火種,一行行 debug 或者查 bug,這樣的效率不僅慢,而且很難分析到根因。服務上線則是各種人工 check 依賴,運行的穩(wěn)不穩(wěn)定,有沒有問題,全靠知人事聽天命。

          俗話說工欲善其事必先利其器。我們如果沒有好的工具,強行上微服務,會導致我們不得不加班加點做業(yè)務以外的事情,徒增工作內容和心智負擔。我們經歷過這個階段,所以不希望同行在重復這一段經歷。試問誰不想早點下班,回去學學技術,貢獻一下開源Jupiter 框架?

          因此為了這個目的,我們將 Juno 進行了開源。經過一個月的努力,我們完成了 Juno 0.2 版本。目前該版本在斗魚內部開始使用。該版本的功能點如下所示:

          • 提供 api 接口,業(yè)務方自動注冊應用、機房、部署等信息

          • 實現(xiàn) form 表單、oauth2 登錄

          • 實現(xiàn) casbin 權限(應用、環(huán)境、數(shù)據(jù)等權限管理)

          • 實現(xiàn) grpc unary、grpc stream、http 的代理(異地多活、消息總線)

          • 實現(xiàn) grafana proxy 內嵌到 juno,統(tǒng)一監(jiān)控和 juno 登錄用戶

          • 實現(xiàn)配置中心編輯器,類似 vscode、git 方式管理配置,并支持右鍵關聯(lián)資源,加密資源。

          • 實現(xiàn) pprof 在線查看性能

          • 實現(xiàn) agent 自動上報 region、zone、hostname 和探活

          • 實現(xiàn)應用和資源依賴拓撲依賴解析關系


          部署

          juno 是一個考慮了單機房和多機房的微服務管理系統(tǒng)。其結構如下。如果是單機房,那么你就不需要使用 juno-proxy。如果你使用機房,那么你需要使用 juno-proxy 做一次代理,方便 juno-admin 與不同機房數(shù)據(jù)互通。


          搭建微服務管理后臺 juno,依賴于如 go、mysql、etcd、prometheus、grafana、pprof、juno-agent(prometheus etcd watch) 等基礎組件和設施。為了方便大家能夠快速使用 juno,我們編寫了juno-install ,大家可以使用腳本或者 docker 安裝依賴環(huán)境,體驗我們的 juno。



          配置

          我們內部討論配置中心是使用表格還是文本,表格的好處是便于管理和迭代開發(fā)、但不利于研發(fā)人員使用,文本的好處是研發(fā)人員使用簡單,但管理和迭代開發(fā)麻煩。這個問題我們思考了好久,最后決定還是以研發(fā)人員用戶體驗為主,采用文本方式。

          為了讓大家更好使用配置中心,就需要思考怎么使用配置中心最簡單。我們認為配置中心應該是可以像我們本地 ide 開發(fā)一樣,能夠將配置復制粘貼,版本管理,代碼對比。因此我們將配置文本變成了編輯器方式。如下所示


          點擊對比版本后,可以看到不同版本提交記錄變化



          右鍵可以選擇插入資源中心的數(shù)據(jù)。

          后期我們會在右鍵加入很多功能,敬請期待





          監(jiān)控

          監(jiān)控是排查問題核心手段之一。監(jiān)控的服務注冊與發(fā)現(xiàn)流程如下所示。


          應用通過 jupiter 框架將服務治理端口注冊到 etcd,juno-agent 會監(jiān)聽/prometheus/job 的前綴 key,將應用治理端口寫入到 prometheus 配置里,prometheus 通過 reload 操作,感知到 jupiter 的應用,然后去對應端口,抓取該應用監(jiān)控數(shù)據(jù)。我們可以訪問juno-admin 應用?,可以看到 juno-admin 的監(jiān)控圖如下所示。




          juno 使用 grafana proxy 模式,這樣就可以使用 juno 的用戶體系,直接訪問 grafana。



          Pprof

          Pprof 是在線調試工具。我們通過 juno-install 腳本,可以很方便的安裝 pprof 所需要的依賴。然后就可以在 juno 上輕輕點擊按鈕,在線查看 pprof 圖片。
          !




          0.3 版本敬請期待

          • 日志

          • grpc postman

          • http postman

          • etcd register 可視化

          • 治理信息可視化

          歡迎大家在https://github.com/douyu/juno/issues提出自己想要的功能點。也歡迎大家使用該項目,能夠更好的完善他項目,讓大家少加班。



          項目地址

          • jupiter 框架:?https://github.com/douyu/jupiter

          • juno 微服務治理后臺:https://github.com/douyu/juno

          • juno 在線體驗地址:http://jupiterconsole.douyu.com


          瀏覽 21
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩日一区 | 大香蕉啪啪 | 国产AV影院| 俺也不去网大香蕉 | 黄色视频在线观看日本极品尤物 |