精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一個牛逼的創業公司后臺技術棧搭建方案

開發 架構 開發工具
在大多數創業公司,因為沒有大公司那些完善的基礎設施,需要從開源界的一個個系統和組件做選型,最終形成整個的后臺技術棧。

在大多數創業公司,因為沒有大公司那些完善的基礎設施,需要從開源界的一個個系統和組件做選型,最終形成整個的后臺技術棧。

說到后臺技術棧,腦海中是不是浮現的下面這樣一幅圖?

??

圖 1

有點眼暈,以下只是我們會用到的一些語言的合集,而且只是語言層面的一部分,就整個后臺技術棧來說,這只是一個開始,從語言開始,還有很多很多的內容。

今天要說的后臺是大后臺的概念,放在服務器上的東西都屬于后臺的東西,比如使用的框架,語言,數據庫,服務,操作系統等等。

整個后臺技術棧,我的理解包括四個層面的內容:

  • 語言:用了哪些開發語言,如:C++/Java/Go/PHP/Python/Ruby 等等。
  • 組件:用了哪些組件,如:MQ 組件,數據庫組件等等。
  • 流程:怎樣的流程和規范,如:開發流程,項目流程,發布流程,監控告警流程,代碼規范等等。
  • 系統:系統化建設,上面的流程需要有系統來保證,如:規范發布流程的發布系統,代碼管理系統等等。

結合以上的的 4 個層面的內容,整個后臺技術棧的結構如圖 2 所示:

??

圖 2:后臺技術棧結構

以上的這些內容都需要我們從零開始搭建,在創業公司,沒有大公司那些完善的基礎設施,需要我們從開源界,從云服務商甚至有些需要自己去組合,去拼裝,去開發一個適合自己的組件或系統以達成我們的目標。

咱們一個個系統和組件的做選型,最終形成我們的后臺技術棧。

各系統組件選型

項目管理/Bug 管理/問題管理

項目管理軟件是整個業務的需求,問題,流程等等的集中地,大家的跨部門溝通協同大多依賴于項目管理工具。

有一些 SaaS 的項目管理服務可以使用,但是很多時間不滿足需求,此時我們可以選擇一些開源的項目,這些項目本身有一定的定制能力,有豐富的插件可以使用。

一般的創業公司需求基本上都能得到滿足,常用的項目如下:

  • Redmine:用 Ruby 開發的,有較多的插件可以使用,能自定義字段,集成了項目管理,Bug 問題跟蹤,WiKi 等功能,不過好多插件 N 年沒有更新了。
  • Phabricator:用 PHP 開發的,Facebook 之前的內部工具,開發這工具的哥們離職后自己搞了一個公司專門做這個軟件,集成了代碼托管, Code Review,任務管理,文檔管理,問題跟蹤等功能,強烈推薦較敏捷的團隊使用。
  • Jira:用 Java 開發的,有用戶故事,Task 拆分,燃盡圖等等,可以做項目管理,也可以應用于跨部門溝通場景,較強大。
  • 悟空 CRM :這個不是項目管理,這個是客戶管理,之所以在這里提出來,是因為在 To B 的創業公司里面,往往是以客戶為核心來做事情的,可以將項目管理和問題跟進的在悟空 CRM 上面來做。

它的開源版本已經基本實現了 CRM 的核心功能,還帶有一個任務管理功能,用于問題跟進,不過用這個的話,還是需要另一個項目管理的軟件協助,順便說一嘴,這個系統的代碼寫得很難維護,只能適用于客戶規模小(1 萬以內)時。

DNS

DNS 是一個很通用的服務,創業公司基本上選擇一個合適的云廠商就行了,國內主要是兩家:

  • 阿里萬網:阿里 2014 年收購了萬網,整合了其域名服務,最終形成了現在的阿里萬網,其中就包含 DNS 這塊的服務。
  • 騰訊 DNSPod:騰訊 2012 年以 4000 萬收購 DNSPod 100% 股份,主要提供域名解析和一些防護功能。

如果你的業務是在國內,主要就是這兩家,選 一個就好,像今日頭條這樣的企業用的也是 DNSPod 的服務,除非一些特殊的原因才需要自建,比如一些 CDN 廠商,或者對區域有特殊限制的。

要實惠一點用阿里基礎版就好了,要成功率高一些,還是用 DNSPod 的貴的那種。

在國外還是選擇亞馬遜吧,阿里的 DNS 服務只有在日本和美國有節點,東南亞最近才開始部點,DNSPod 也只有美國和日本,像一些出海的企業,其選擇的云服務基本都是亞馬遜。

如果是線上產品,DNS 強烈建議用付費版,阿里的那幾十塊錢的付費版基本可以滿足需求。

如果還需要一些按省份或按區域調試的邏輯,則需要加錢,一年也就幾百塊,省錢省力。

如果是國外,優先選擇亞馬遜,如果需要國內外互通并且有自己的 App 的話,建議還是自己實現一些容災邏輯或者智能調度。

因為沒有一個現成的 DNS 服務能同時較好的滿足國內外場景,或者用多個域名,不同的域名走不同的 DNS 。

LB(負載均衡)

LB(負載均衡)是一個通用服務,一般云廠商的 LB 服務基本都有如下功能:

  • 支持四層協議請求(包括 TCP、UDP 協議)
  • 支持七層協議請求(包括 HTTP、HTTPS 協議)
  • 集中化的證書管理系統支持 HTTPS 協議
  • 健康檢查

如果你線上的服務機器都是用的云服務,并且是在同一個云服務商的話,可以直接使用云服務商提供的 LB 服務,如阿里云的 SLB,騰訊云的 CLB,亞馬遜的 ELB 等等。如果是自建機房基本都是 LVS + Nginx。

CDN

CDN 現在已經是一個很紅很紅的市場,基本上只能掙一些辛苦錢,都是貼著成本在賣。

國內以網宿為龍頭,他們家占據整個國內市場份額的 40% 以上,后面就是騰訊,阿里。網宿有很大一部分是因為直播的興起而崛起。

國外,Amazon 和 Akamai 合起來占比大概在 50%,曾經的國際市場老大 Akamai 擁有全球超一半的份額,在 Amazon CDN入局后,份額跌去了將近 20%,眾多中小企業都轉向后者,Akamai 也是無能為力。

國內出海的 CDN 廠商,更多的是為國內的出海企業服務,三家大一點的 CDN 服務商里面也就網宿的節點多一些,但是也多不了多少。阿里和騰訊還處于前期階段,僅少部分國家有節點。

就創業公司來說,CDN 用騰訊云或阿里云即可,其相關系統較完善,能輕松接入,網宿在系統支持層面相對較弱一些,而且還貴一些。

并且,當流量上來后,CDN 不能只用一家,需要用多家,不同的 CDN 在全國的節點覆蓋不一樣。

而且針對不同的客戶云廠商內部有些區分客戶集群,并不是全節點覆蓋(但有些云廠商說自己是全網節點),除了節點覆蓋的問題,多 CDN 也在一定程度上起到容災的作用。

RPC 框架

維基百科對 RPC 的定義是:遠程過程調用(Remote Procedure Call,RPC)是一個計算機通信協議。

該協議允許運行于一臺計算機的程序調用另一臺計算機的子程序,而程序員無需額外地為這個交互作用編程。

通俗來講,一個完整的 RPC 調用過程,就是 Server 端實現了一個函數,客戶端使用 RPC 框架提供的接口,調用這個函數的實現,并獲取返回值的過程。

業界 RPC 框架大致分為兩大流派,一種側重跨語言調用,另一種是偏重服務治理。

跨語言調用型的 RPC 框架有 Thrift、gRPC、Hessian、Hprose 等。這類 RPC 框架側重于服務的跨語言調用,能夠支持大部分的語言進行語言無關的調用,非常適合多語言調用場景。

但這類框架沒有服務發現相關機制,實際使用時需要代理層進行請求轉發和負載均衡策略控制。

其中,gRPC 是 Google 開發的高性能、通用的開源 RPC 框架,其由 Google 主要面向移動應用開發并基于 HTTP/2 協議標準而設計,基于 ProtoBuf(Protocol Buffers)序列化協議開發,且支持眾多開發語言。本身它不是分布式的,所以要實現框架的功能需要進一步的開發。

Hprose(High Performance Remote Object Service Engine)是一個 MIT 開源許可的新型輕量級跨語言跨平臺的面向對象的高性能遠程動態通訊中間件。

服務治理型的 RPC 框架的特點是功能豐富,提供高性能的遠程調用、服務發現及服務治理能力,適用于大型服務的服務解耦及服務治理,對于特定語言(Java)的項目可以實現透明化接入。

缺點是語言耦合度較高,跨語言支持難度較大。國內常見的冶理型 RPC 框架如下:

  • Dubbo:Dubbo 是阿里巴巴公司開源的一個 Java 高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring 框架無縫集成。

當年在淘寶內部,Dubbo 由于跟淘寶另一個類似的框架 HSF 有競爭關系,導致 Dubbo 團隊解散,最近又活過來了,有專職同學投入。

  • DubboX:DubboX 是由當當在基于 Dubbo 框架擴展的一個 RPC 框架,支持 REST 風格的遠程調用、Kryo/FST 序列化,增加了一些新的 feature。

Motan:Motan 是新浪微博開源的一個 Java 框架。它誕生的比較晚,起于 2013 年,2016 年 5 月開源。Motan 在微博平臺中已經廣泛應用,每天為數百個服務完成近千億次的調用。

  • RPCX:RPCX 是一個類似阿里巴巴 Dubbo 和微博 Motan 的分布式的 RPC 服務框架,基于 Golang NET/RPC 實現。

但是 RPCX 基本只有一個人在維護,沒有完善的社區,使用前要慎重,之前做 Golang 的 RPC 選型時也有考慮這個,最終還是放棄了,選擇了 gRPC,如果想自己自研一個 RPC 框架,可以參考學習一下。

名字發現/服務發現

名字發現和服務發現分為兩種模式,一個是客戶端發現模式,一種是服務端發現模式??蚣苤谐S玫姆瞻l現是客戶端發現模式。

所謂服務端發現模式是指客戶端通過一個負載均衡器向服務發送請求,負載均衡器查詢服務注冊表并把請求路由到一臺可用的服務實例上?,F在常用的負載均衡器都是此類模式,常用于微服務中。

所有的名字發現和服務發現都要依賴于一個可用性非常高的服務注冊表,業界常用的服務注冊表有如下三個:

  • Etcd:一個高可用、分布式、一致性、Key-Value 方式的存儲,被用在分享配置和服務發現中。兩個著名的項目使用了它:Kubernetes 和 Cloud Foundry。
  • Consul:一個發現和配置服務的工具,為客戶端注冊和發現服務提供了API,Consul 還可以通過執行健康檢查決定服務的可用性。
  • Apache ZooKeeper:一個廣泛使用、高性能的針對分布式應用的協調服務。

除此之外也可以自己實現服務實現,或者用 Redis 也行,只是需要自己實現高可用性。

關系數據庫

關系數據庫分為兩種,一種是傳統關系數據庫,如 Oracle,MySQL,Maria,DB2,PostgreSQL 等等。

另一種是 NewSQL,即至少要滿足以下五點的新型關系數據庫:

  • 完整地支持 SQL,支持 JOIN / GROUP BY /子查詢等復雜 SQL 查詢。
  • 支持傳統數據標配的 ACID 事務,支持強隔離級別。
  • 具有彈性伸縮的能力,擴容縮容對于業務層完全透明。
  • 真正的高可用,異地多活、故障恢復的過程不需要人為的接入,系統能夠自動地容災和進行強一致的數據恢復。
  • 具備一定的大數據分析能力。

傳統關系數據庫用得最多的是 MySQL,因為成熟,穩定,一些基本的需求都能滿足,在一定數據量級之前基本單機傳統數據庫都可以搞定。

而且現在較多的開源系統都是基于 MySQL,開箱即用,再加上主從同步和前端緩存,百萬 PV 的應用都可以搞定了。

不過 CentOS 7 已經放棄了 MySQL,而改使用 MariaDB。MariaDB 數據庫管理系統是 MySQL 的一個分支,主要由開源社區在維護,采用 GPL 授權許可。

開發這個分支的原因之一是:甲骨文公司收購了 MySQL 后,有將 MySQL 閉源的潛在風險,因此社區采用分支的方式來避開這個風險。

在 Google 發布了 F1: A Distributed SQL Database That Scales 和 Spanner: Google’s Globally-Distributed Databasa 之后,業界開始流行起 NewSQL。

于是有了 CockroachDB,然后有了奇叔公司的 TiDB。國內已經有比較多的公司使用 TiDB,之前在創業公司時在大數據分析時已經開始應用 TiDB,當時應用的主要原因是 MySQL 要使用分庫分表,邏輯開發比較復雜,擴展性不夠。

NoSQL

NoSQL 顧名思義就是 Not-Only SQL,也有人說是 No–SQL,個人偏向于 Not-Only SQL,它并不是用來替代關系庫,而是作為關系型數據庫的補充而存在。

常見 NoSQL 有四個類型:

  • 鍵值,適用于內容緩存,適合混合工作負載并發高擴展要求大的數據集,其優點是簡單,查詢速度快,缺點是缺少結構化數據,常見的有 Redis,Memcache,BerkeleyDB 和 Voldemort 等等。
  • 列式,以列簇式存儲,將同一列數據存在一起,常見于分布式的文件系統,其中以 Hbase,Cassandra 為代表。

Cassandra 多用于寫多讀少的場景,國內用得比較多的有 360,大概 1500 臺機器的集群,國外大規模使用的公司比較多,如 eBay,Instagram,Apple 和沃爾瑪等等。

  • 文檔,數據存儲方案非常適用承載大量不相關且結構差別很大的復雜信息。性能介于 KV 和關系數據庫之間,它的靈感來自 Lotus Notes,常見的有 MongoDB,CouchDB 等等。
  • 圖形,圖形數據庫擅長處理任何涉及關系的狀況,比如社交網絡,推薦系統等。專注于構建關系圖譜,需要對整個圖做計算才能得出結果,不容易做分布式的集群方案,常見的有 Neo4J,InfoGrid 等。

除了以上 4 種類型,還有一些特種的數據庫,如對象數據庫,XML 數據庫,這些都有針對性對某些存儲類型做了優化的數據庫。

在實際應用場景中,何時使用關系數據庫,何時使用 NoSQL,使用哪種類型的數據庫,這是我們在做架構選型時一個非常重要的考量,甚至會影響整個架構的方案。

消息中間件

消息中間件在后臺系統中是必不可少的一個組件,一般我們會在以下場景中使用消息中間件:

  • 異步處理:異步處理是使用消息中間件的一個主要原因,在工作中最常見的異步場景有用戶注冊成功后需要發送注冊成功郵件、緩存過期時先返回老的數據,然后異步更新緩存、異步寫日志等等。
  • 通過異步處理,可以減少主流程的等待響應時間,讓非主流程或者非重要業務通過消息中間件做集中的異步處理。
  • 系統解耦:比如在電商系統中,當用戶成功支付完成訂單后,需要將支付結果通知 ERP 系統、發票系統、WMS、推薦系統、搜索系統、風控系統等進行業務處理。
  • 這些業務處理不需要實時處理、不需要強一致,只需要最終一致性即可,因此可以通過消息中間件進行系統解耦。通過這種系統解耦還可以應對未來不明確的系統需求。
  • 削峰填谷:當系統遇到大流量時,監控圖上會看到一個一個的山峰樣的流量圖,通過使用消息中間件將大流量的請求放入隊列,通過消費者程序將隊列中的處理請求慢慢消化,達到削峰填谷的效果。

最典型的場景是秒殺系統,在電商的秒殺系統中下單服務往往會是系統的瓶頸,因為下單需要對庫存等做數據庫操作,需要保證強一致性,此時使用消息中間件進行下單排隊和流控,讓下單服務慢慢把隊列中的單處理完,保護下單服務,以達到削峰填谷的作用。

業界消息中間件是一個非常通用的東西,大家在做選型時有使用開源的,也有自己造輪子的,甚至有直接用 MySQL 或 Redis 做隊列的,關鍵看是否滿足你的需求。

如果是使用開源的項目,以下的表格在選型時可以參考:

??

圖 3

以上圖的緯度為:名字、成熟度、所屬社區/公司、文檔、授權方式、開發語言、支持的協議、客戶端支持的語言、性能、持久化、事務、集群、負載均衡、管理界面、部署方式、評價。

代碼管理

代碼是互聯網創業公司的命脈之一,代碼管理很重要,常見的考量點包括兩塊:

  • 安全和權限管理,將代碼放到內網并且對于關系公司命脈的核心代碼做嚴格的代碼控制和機器的物理隔離。
  • 代碼管理工具,Git 作為代碼管理的不二之選,你值得擁有。GitLab 是當今最火的開源 Git 托管服務端,沒有之一,雖然有企業版,但是其社區版基本能滿足我們大部分需求,結合 Gerrit 做 Code Review,基本可以覆蓋基本訴求了。

當然 GitLab 也有代碼對比,但沒 Gerrit 直觀。Gerrit 比 GitLab 提供了更好的代碼檢查界面與主線管理體驗,更適合在對代碼質量有高要求的文化下使用。

持續集成

持續集成簡稱 CI(continuous integration),是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,每天可能會發生多次集成。

每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。

持續集成為研發流程提供了代碼分支管理/比對、編譯、檢查、發布物輸出等基礎工作,為測試的覆蓋率版本編譯、生成等提供統一支持。

業界免費的持續集成工具中,系統我們有如下一些選擇:

  • Jenkins:Java 寫的有強大的插件機制,MIT 協議開源 (免費,定制化程度高,它可以在多臺機器上進行分布式地構建和負載測試)。

Jenkins 可以算是無所不能,基本沒有 Jenkins 做不了的,無論從小型團隊到大型團隊 Jenkins 都可以搞定。不過如果要大規模使用,還是需要有人力來學習和維護。

  • TeamCity:TeamCity 與 Jenkins 相比使用更加友好,也是一個高度可定制化的平臺。但是用的人多了,TeamCity 就要收費了。
  • Strider:Strider 是一個開源的持續集成和部署平臺,使用 Node.js 實現,存儲使用的是 MongoDB,BSD 許可證,概念上類似 Travis 和 Jenkins。
  • GitLab CI:從 GitLab 8.0 開始,GitLab CI 就已經集成在 GitLab,我們只要在項目中添加一個 .gitlab-ci.yml 文件,然后添加一個 Runner,即可進行持續集成。

并且 GitLab 與 Docker 有著非常好的相互協作的能力。免費版與付費版本的不同可以參見:https://about.gitlab.com/products/feature-comparison/。

  • Travis:Travis 和 GitHub 強關聯;閉源代碼使用 SaaS 還需考慮安全問題;不可定制;開源項目免費,其他收費。
  • Go:Go 是 ThoughtWorks 公司 Cruise Control 的化身。除了 ThoughtWorks 提供的商業支持,Go 是免費的。它適用于 Windows,Mac 和各種 Linux 發行版。

日志系統

日志系統一般包括打日志,采集,中轉,收集,存儲,分析,呈現,搜索還有分發等。

一些特殊的如染色,全鏈條跟蹤或者監控都可能需要依賴于日志系統實現。

日志系統的建設不僅僅是工具的建設,還有規范和組件的建設,一些基本的日志在框架和組件層面加就行了,比如全鏈接跟蹤之類的。

對于常規日志系統 ELK 能滿足大部分的需求,ELK 包括如下組件:

  • ElasticSearch 是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,RESTful 風格接口,多數據源,自動搜索負載等。
  • Logstash 是一個完全開源的工具,它可以對你的日志進行收集、分析,并將其存儲供以后使用。
  • Kibana 是一個開源和免費的工具,它可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。
  • Filebeat 已經完全替代了 Logstash-Forwarder 成為新一代的日志采集器,同時鑒于它輕量、安全等特點,越來越多人開始使用它。

因為免費的 ELK 沒有任何安全機制,所以這里使用了 Nginx 作反向代理,避免用戶直接訪問 Kibana 服務器。

加上配置 Nginx 實現簡單的用戶認證,一定程度上提高安全性。另外,Nginx 本身具有負載均衡的作用,能夠提高系統訪問性能。

ELK 架構如圖 4 所示:

??

圖 4:ELK 流程圖

對于有實時計算的需求,可以使用 Flume + Kafka + Storm + MySQL 方案,一般架構如圖 5 所示:

?

圖 5:實時分析系統架構圖

其中:

  • Flume 是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸的日志收集系統,支持在日志系統中定制各類數據發送方,用于收集數據。

同時,Flume 提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力。

  • Kafka 是由 Apache 軟件基金會開發的一個開源流處理平臺,由 Scala 和 Java 編寫。

其本質上是一個“按照分布式事務日志架構的大規模發布/訂閱消息隊列”,它以可水平擴展和高吞吐率而被廣泛使用。

Kafka 追求的是高吞吐量、高負載,Flume 追求的是數據的多樣性,二者結合起來效果很不錯。

監控系統

監控系統只包含與后臺相關的,這里主要是兩塊,一個是操作系統層的監控,比如機器負載,IO,網絡流量,CPU,內存等操作系統指標的監控。

另一個是服務質量和業務質量的監控,比如服務的可用性,成功率,失敗率,容量,QPS 等等。

常見業務的監控系統先有操作系統層面的監控(這部分較成熟),然后擴展出其他監控,如 Zabbix,小米的 Open-Falcon,也有一出來就是兩者都支持的,如 Prometheus。

如果對業務監控要求比較高一些,在創業選型中建議可以優先考慮 Prometheus。

亞洲區域使用 Zabbix 較多,而美洲和歐洲,以及澳大利亞使用 Prometheus 居多,換句話說,英文國家地區(發達國家?)使用 Prometheus 較多。

Prometheus 是由 Sound Cloud 開發的開源監控報警系統和時序列數據庫(TSDB)。

Prometheus 使用 Go 語言開發,是 Google BorgMon 監控系統的開源版本。

相對于其他監控系統使用的 Push 數據的方式,Prometheus 使用的是 Pull 的方式,其架構如圖 7 所示:

??

圖 7:Prometheus 架構圖

如上圖所示,Prometheus 包含的主要組件如下:

  • Prometheus Server:主要負責數據采集和存儲,提供 PromQL 查詢語言的支持。Server 通過配置文件、文本文件、ZooKeeper、Consul 等方式指定抓取目標。

根據這些目標,Server 會定時去抓取 Metrics 數據,每個抓取目標需要暴露一個 HTTP 服務的接口給它定時抓取。

  • 客戶端 SDK:官方提供的客戶端類庫有 Go、Java、Scala、Python、Ruby,其他還有很多第三方開發的類庫,支持 Nodejs、PHP、Erlang 等。
  • Push Gateway:支持臨時性 Job 主動推送指標的中間網關。
  • Exporter Exporter:是 Prometheus 的一類數據采集組件的總稱。它負責從目標處搜集數據,并將其轉化為 Prometheus 支持的格式。

與傳統的數據采集組件不同的是,它并不向中央服務器發送數據,而是等待中央服務器主動前來抓取。

Prometheus 提供多種類型的 Exporter 用于采集各種不同服務的運行狀態。目前支持的有數據庫、硬件、消息中間件、存儲系統、HTTP 服務器、JMX 等。

  • Alertmanager:是一個單獨的服務,可以支持 Prometheus 的查詢語句,提供十分靈活的報警方式。
  • Prometheus HTTP API 的查詢方式,自定義所需要的輸出。
  • Grafana:是一套開源的分析監視平臺,支持 Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch 等數據源,其 UI 非常漂亮且高度定制化。

創業公司選擇 Prometheus + Grafana 的方案,再加上統一的服務框架(如 gRPC),可以滿足大部分中小團隊的監控需求。

配置系統

隨著程序功能的日益復雜,程序的配置日益增多:各種功能的開關、降級開關,灰度開關,參數的配置、服務器的地址、數據庫配置等等。

除此之外,對后臺程序配置的要求也越來越高:配置修改后實時生效,灰度發布,分環境、分用戶,分集群管理配置,完善的權限、審核機制等等。

在這樣的大環境下,傳統的通過配置文件、數據庫等方式已經越來越無法滿足開發人員對配置管理的需求。

業界有如下兩種方案:

  • 基于 ZK 和 Etcd,支持界面和 API ,用數據庫來保存版本歷史,預案,走審核流程,下發到 ZK 或 Etcd 這種有推送能力的存儲里(服務注冊本身也是用 ZK 或 Etcd,選型就一塊了)。

客戶端都直接和 ZK 或 Etcd 打交道。至于灰度發布,各家不同,有一種實現是同時發布一個需要灰度的 IP 列表,客戶端監聽到配置節點變化時,對比一下自己是否屬于該列表。

PHP 這種無狀態的語言和其他 ZK/Etcd 不支持的語言,只好自己在客戶端的機器上起一個 Agent 來監聽變化,再寫到配置文件或共享內存,如 360 的 Qconf。

  • 基于運維自動化的配置文件的推送,審核流程,配置數據管理和方案一類似,下發時生成配置文件,基于運維自動化工具如 Puppet,Ansible 推送到每個客戶端,而應用則定時重新讀取這個外部的配置文件,灰度發布在下發配置時指定 IP 列表。

創業公司前期不需要這種復雜,直接上 ZK,弄一個界面管理 ZK 的內容,記錄一下所有人的操作日志,程序直連 ZK,或者或者用 Qconf 等基于 ZK 優化后的方案。

發布系統/部署系統

從軟件生產的層面看,代碼到最終服務的典型流程如圖 8 所示:

??

圖 8:流程圖

從上圖中可以看出,從開發人員寫下代碼到服務最終用戶是一個漫長過程,整體可以分成三個階段:

  • 從代碼(Code)到成品庫(Artifact)這個階段主要對開發人員的代碼做持續構建并把構建產生的制品集中管理,是為部署系統準備輸入內容的階段。
  • 從制品到可運行服務 這個階段主要完成制品部署到指定環境,是部署系統的最基本工作內容。
  • 從開發環境到最終生產環境 這個階段主要完成一次變更在不同環境的遷移,是部署系統上線最終服務的核心能力。

發布系統集成了制品管理,發布流程,權限控制,線上環境版本變更,灰度發布,線上服務回滾等幾方面的內容,是開發人員工作結晶最終呈現的重要通道。

開源的項目中沒有完全滿足的項目,如果只是 Web 類項目,Walle、Piplin 都是可用的,但是功能不太滿足,創業初期可以集成 Jenkins + Gitlab + Walle(可以考慮兩天時間完善一下)。

以上方案基本包括制品管理,發布流程,權限控制,線上環境版本變更,灰度發布(需要自己實現),線上服務回滾等功能。

跳板機

跳板機面對的是需求是要有一種能滿足角色管理與授權審批、信息資源訪問控制、操作記錄和審計、系統變更和維護控制要求,并生成一些統計報表配合管理規范來不斷提升 IT 內控的合規性。

它能對運維人員操作行為的進行控制和審計,對誤操作、違規操作導致的操作事故,快速定位原因和責任人。其功能模塊一般包括:帳戶管理、認證管理、授權管理、審計管理等等。

開源項目中,Jumpserver 能夠實現跳板機常見需求,如授權、用戶管理、服務器基本信息記錄等,同時又可批量執行腳本等功能。

其中錄像回放、命令搜索、實時監控等特點,又能幫助運維人員回溯操作歷史,方便查找操作痕跡,便于管理其他人員對服務器的操作控制。

機器管理

機器管理的工具選擇的考量可以包含以下三個方面:

  • 是否簡單,是否需要每臺機器部署 Agent(客戶端)。
  • 語言的選擇(Puppet/Chef vs Ansible/SaltStack )開源技術,不看官網不足以熟練,不懂源碼不足以精通;Puppet、Chef 基于 Ruby 開發,Ansible、SaltStack 基于 Python 開發的。
  • 速度的選擇(Ansible vs SaltStack),Ansible 基于 SSH 協議傳輸數據,SaltStack 使用消息隊列 zeroMQ 傳輸數據。

大規模并發的能力對于幾十臺到 200 臺規模的兄弟來講,Ansible 的性能也可接受,如果一次操作上千臺,用 SaltStack 好一些。

如圖 9 所示:

??

圖 9:機器管理軟件對比

一般創業公司選擇 Ansible 能解決大部分問題,其簡單,不需要安裝額外的客戶端,可以從命令行來運行,不需要使用配置文件。

至于比較復雜的任務,Ansible 配置通過名為 Playbook 的配置文件中的 YAML 語法來加以處理。Playbook 還可以使用模板來擴展其功能。

創業公司的選擇

選擇合適的語言:

  • 選擇團隊熟悉的/能掌控的,創業公司人少事多,無太多冗余讓研發團隊熟悉新的語言,能快速上手,能快速出活,出了問題能快速解決的問題的語言才是好的選擇。
  • 選擇更現代一些的,這里的現代是指語言本身已經完成一些之前需要特殊處理的特性,比如內存管理,線程等等。
  • 選擇開源輪子多的或者社區活躍度高的,這個原則是為了保證在開發過程中減少投入,有穩定可靠的輪子可以使用,遇到問題可以在網上快速搜索到答案。
  • 選擇好招人的一門合適的語言會讓創業團隊減少招聘的成本,快速招到合適的人。
  • 選擇能讓人有興趣的與上面一點相關,讓人感興趣,在后面留人時有用。

選擇合適的組件和云服務商:

  • 選擇靠譜的云服務商。
  • 選擇云服務商的組件。
  • 選擇成熟的開源組件。
  • 選擇采用在一線互聯網公司落地并且開源的,且在社區內形成良好口碑的產品。
  • 開源社區活躍度。

選擇靠譜的云服務商,如果服務商都不靠譜,他們所承諾的那些可用性問題基本上都會在你的身上發生。

這里我們還是需要自己做一些工作,比如多服務商備份,如用 CDN,你一定不要只選一家,至少選兩家,一個是災備,保持后臺切換的能力,另一個是多點覆蓋,不同的服務商在 CDN 節點上的資源是不一樣的。

選擇了云服務商以后,就會有很多的產品你可以選擇了,比較存儲,隊列這些都會有現成的產品,這個時候就糾結了,是用呢?還是自己在云主機上搭呢?

在這里我的建議是前期先用云服務商的,大了后再自己搞,這樣會少掉很多運維的事情,但是這里要多了解一下云服務商的組件特性以及一些坑。

比如他們內網會經常斷開,他們升級也會閃斷,所以在業務側要做好容錯和規避。

關于開源組件,盡可能選擇成熟的,成熟的組件經歷了時間的考驗,基本不會出大的問題,并且有成套的配套工具,出了問題在網上也可以很快的找到答案,你所遇到的坑基本上都有人踩過了。

制定流程和規范:

  • 制定開發的規范,代碼及代碼分支管理規范,關鍵性代碼僅少數人有權限
  • 制定發布流程規范,從發布系統落地
  • 制定運維規范
  • 制定數據庫操作規范,收攏數據庫操作權限
  • 制定告警處理流程,做到告警有人看有人處理
  • 制定匯報機制,晨會/周報

自研和選型合適的輔助系統

所有的流程和規范都需要用系統來固化,否則就是空中樓閣,如何選擇這些系統呢?

參照上個章節咱們那些開源的,對比一下選擇的語言,組件之類的,選擇一個最合適的即可。

比如項目管理的,看下自己是什么類型的公司,開發的節奏是怎樣的,瀑布,敏捷的按項目劃分,還是按客戶劃分等等,平時是按項目組織還是按任務組織等等。

比如日志系統,之前是打的文本,那么上一個 ELK,規范化一些日志組件,基本上很長一段時間內不用考慮日志系統的問題,最多拆分一下或者擴容一下。等到組織大了,自己搞一個日志系統。

比如代碼管理,項目管理系統這些都放內網,安全,在互聯網公司來說,屬于命脈了,命脈的東西還是放在別人拿不到或很難拿到的地方會比較靠譜一些。

選擇過程中需要思考的問題

技術棧的選擇有點像做出了某種承諾,在一定的時間內這種承諾沒法改變,于是我們需要在選擇的時候有一些思考。

比如用 Go 這條線的東西,技術比較新,業界組件儲備夠嗎?組織內的人員儲備夠嗎?學習成本多少?寫出來的東西能滿足業務性能要求嗎?能滿足時間要求嗎?

向未來看一眼,在一年到三年內,我們需要做出改變嗎?技術棧要做根本性的改變嗎?如果組織發展很快,在 200 人,500 人時,現有的技術棧是否需要大動?

創業過程中需要考慮成本,這里的成本不僅僅是花費多少錢,付出多少工資,有時更重要的是時間成本,很多業務在創業時大家拼的就是時間,就是一個時間窗,過了就沒你什么事兒了。

基于云的創業公司后臺技術架構

結合上面內容的考量,在對一個個系統和組件的做選型之后,以云服務為基礎,一個創業公司的后臺技術架構如圖 10 所示:

??

圖 10:后臺技術架構

??

 

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2021-05-06 11:42:07

運維架構技術

2024-09-12 17:14:33

2014-08-01 10:24:11

2015-10-12 09:58:51

2024-09-19 17:52:47

2015-12-24 18:34:20

2020-12-10 11:18:47

Redis搜索引擎Java

2016-11-10 14:34:15

創業業務技術架構

2016-12-26 17:28:08

構建業務技術架構

2019-12-17 09:42:11

運維架構技術

2017-04-27 14:26:55

CTO訓練營,技術管理

2012-07-16 13:19:20

創業項目

2019-07-29 15:24:34

CEO技術負責人加班

2017-10-10 19:43:44

架構 搭建 技術

2016-01-05 16:46:42

技術產品經理

2009-02-12 15:07:57

程序員創業經驗

2010-08-17 10:46:03

2010-10-18 11:39:41

程序員

2019-01-28 10:45:28

AI 數據人工智能

2013-07-04 09:57:36

創業創業福利創業補貼
點贊
收藏

51CTO技術棧公眾號

国产女人被狂躁到高潮小说| 妺妺窝人体色www在线小说| 中国女人一级一次看片| 国产精品黑丝在线播放| 日韩视频一区二区在线观看| 男人添女荫道口喷水视频| 日本啊v在线| 久久国产剧场电影| 欧美激情中文字幕乱码免费| 丰满少妇一区二区| www.欧美| 欧美日韩在线另类| 亚洲最新免费视频| 日韩porn| 丁香婷婷综合五月| 国产精品吴梦梦| 久草视频在线观| 日韩毛片视频| 亚洲男人7777| 欧美图片自拍偷拍| 久久亚洲国产精品尤物| 欧美日韩另类字幕中文| 日韩视频在线观看视频| 国产视频福利在线| 成人福利视频网站| 成人网页在线免费观看| 国产在线观看黄色| 禁久久精品乱码| www国产91| 国产一二三四区在线| 国产精品视频3p| 欧美色精品在线视频| 日韩av片在线看| 亚洲丝袜一区| 亚洲免费在线观看| 亚洲一卡二卡三卡| www.亚洲.com| 久久九九国产精品| 欧美福利精品| 性xxxxbbbb| 成人免费福利片| 成人免费在线看片| 国产日韩免费视频| 韩国午夜理伦三级不卡影院| 国产精品av在线播放| 久久青青草视频| 自拍偷拍欧美专区| 久久影视电视剧免费网站清宫辞电视 | 国产精品专区第二| 亚洲高清视频免费观看| 视频一区二区中文字幕| 欧美一级高清免费播放| 欧美亚韩一区二区三区| 亚洲精品黄色| 国内外成人免费激情在线视频| 黄色片在线观看网站| 9999国产精品| 久久综合免费视频| 真实国产乱子伦对白在线| 亚洲影视一区二区三区| 欧美插天视频在线播放| 强行糟蹋人妻hd中文| 欧美日韩综合| 久久久久久美女| 日韩精品一区二区av| 亚洲大胆视频| 日本道色综合久久影院| 精品人妻一区二区色欲产成人| 模特精品在线| 国产精品爱啪在线线免费观看| 亚洲av无码精品一区二区| 日韩av一区二区在线影视| 国产精品99久久久久久人| 在线免费一级片| 韩国一区二区三区| 国产欧美在线一区二区| 天堂视频中文在线| 国产区在线观看成人精品 | 色噜噜狠狠色综合欧洲selulu| 精品一卡二卡三卡| 成人精品高清在线视频| 91精品国产品国语在线不卡| 风韵丰满熟妇啪啪区老熟熟女| 久本草在线中文字幕亚洲| 亚洲美女黄色片| 娇小11一12╳yⅹ╳毛片| 欧美日韩岛国| 欧美在线免费视频| 国产免费不卡av| 97久久超碰国产精品| 日韩欧美第二区在线观看| 黄色免费在线观看| 欧美性高潮在线| 国产永久免费网站| 麻豆一区二区麻豆免费观看| 伊人成人开心激情综合网| 亚洲国产美女视频| 9久re热视频在线精品| 国产美女精品免费电影| 日本高清视频免费看| 中文一区二区在线观看| 97视频在线免费| 国语自产精品视频在线看抢先版结局| 日韩精品一区二区三区四区视频| 白丝女仆被免费网站| 国产主播一区| 国产精品一区久久| 天天摸夜夜添狠狠添婷婷| 国产精品毛片无遮挡高清| 九九爱精品视频| 91麻豆精品一二三区在线| 日韩av网站导航| 丰满少妇高潮久久三区| 日韩不卡一区二区三区| 精品免费视频123区| 黄网站app在线观看| 色88888久久久久久影院野外| 久久人人爽人人片| 欧美日韩伦理| 欧美在线一区二区三区四| 国产精品丝袜黑色高跟鞋| 久久久99免费| 黄色免费观看视频网站| 久久九九精品视频| 日韩在线国产精品| 国产一区二区视频免费| 99re视频这里只有精品| av在线免费观看国产| 成人在线视频www| 国产亚洲视频在线观看| 影音先锋在线国产| 99国产精品久久久| 僵尸世界大战2 在线播放| 国产一区二区| 久久精品国产欧美激情| 激情网站在线观看| 久久网站最新地址| 日韩欧美视频网站| 欧美天堂社区| 97av在线播放| 天天插天天干天天操| 亚洲电影在线播放| 欧美性生交xxxxx| 香蕉视频国产精品| 91精品综合久久久久久五月天| 高清性色生活片在线观看| 色综合久久久久综合体桃花网| 日本护士做爰视频| 亚洲综合日本| 欧美二区三区| 91精品店在线| 日韩中文娱乐网| 国产一区二区在线不卡| 国产精品福利电影一区二区三区四区 | 在线观看三级视频| 日韩限制级电影在线观看| 草视频在线观看| 国产69精品久久久久777| 欧美无砖专区免费| 美女一区二区在线观看| 91sao在线观看国产| 久久精品国产亚洲a∨麻豆| 欧美在线观看一区二区| jizzjizz日本少妇| 国产裸体歌舞团一区二区| 第九区2中文字幕| 丁香综合av| 日本精品一区二区三区在线| 成在在线免费视频| 91麻豆精品国产91久久久资源速度 | 亚洲欧洲精品一区二区三区不卡| 福利片一区二区三区| 亚洲视频电影在线| 国产伦理久久久| 外国成人直播| 伦伦影院午夜日韩欧美限制| 丰满肥臀噗嗤啊x99av| 亚洲一区二区视频在线观看| 色天使在线视频| 日韩精品欧美成人高清一区二区| 一区在线电影| 国产成人在线中文字幕| 日韩美女激情视频| caopo在线| 日韩精品视频在线免费观看| 中文字幕一区二区三区四区视频 | 国产精品自拍合集| 免费一区二区三区视频导航| 国产精品一区二区久久久久| 91视频欧美| 尤物yw午夜国产精品视频明星| 国产乱码久久久久| 狠狠躁夜夜躁久久躁别揉| 高清国产在线观看| 国产91综合一区在线观看| 亚洲熟妇av一区二区三区| 91精品成人| 欧美一区二区综合| 97色成人综合网站| 国产精品中文字幕久久久| ****av在线网毛片| 日韩视频免费大全中文字幕| 性感美女福利视频| 日韩丝袜情趣美女图片| 国产99久久久久久免费看| 亚洲一卡二卡三卡四卡五卡| 国产一二三四区在线| 99久久99久久久精品齐齐| 日日干日日操日日射| 久久久久久黄| 欧美成人免费在线观看视频| 久久久久久免费视频| 日本婷婷久久久久久久久一区二区| 日韩欧美中文字幕在线视频 | 11024精品一区二区三区日韩| 午夜欧美一区二区三区在线播放 | 天天色图综合网| 日本中文字幕免费在线观看| 久久精品人人爽人人爽| 中文字幕无码人妻少妇免费| 国产精品一区二区三区乱码| 999精品视频在线| 久久中文精品| 国产精品va无码一区二区| 国产精品多人| 喜爱夜蒲2在线| 水蜜桃久久夜色精品一区| 欧洲一区二区在线| 亚洲精品国产动漫| 国产综合色一区二区三区| 中文在线免费一区三区| 91久久国产婷婷一区二区| 国产精品99| 国产精品高潮呻吟久久av无限| 一个人看的www视频在线免费观看| 欧美精品电影免费在线观看| 色黄网站在线观看| 久久av在线播放| 国产在线69| 欧美乱大交做爰xxxⅹ性3| 18视频在线观看网站| 超在线视频97| 中文在线手机av| 欧美丰满少妇xxxxx| 色av手机在线| 久久久久国产精品www| 黑人极品ⅴideos精品欧美棵| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧洲美女少妇精品| 久久天堂电影网| 污视频在线免费观看网站| 九九久久精品一区| 国产一线二线在线观看 | 日本福利视频导航| 91精品亚洲| 免费高清一区二区三区| 国产日韩专区| 日韩免费高清在线| 蜜臀av一区二区| 黄色片免费网址| 国产+成+人+亚洲欧洲自线| 在线黄色免费网站| 国产亚洲精品超碰| 亚洲天堂精品一区| 亚洲精品免费视频| 日韩欧美中文字幕一区二区| 欧美性少妇18aaaa视频| 国产精品国产精品国产| 在线播放视频一区| 东京干手机福利视频| 亚洲免费小视频| 国产不卡在线| 8x拔播拔播x8国产精品| 欧美大片1688网站| 亚洲综合在线播放| 三级精品视频| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 伊人青青综合网| 日韩中文字幕在线视频观看| 日本vs亚洲vs韩国一区三区二区 | 爽爽爽爽爽爽爽成人免费观看| 国产在线激情视频| 欧美亚洲一区在线| 亚洲综合资源| 久久伦理网站| 91精品国产91久久久久久密臀| 男人添女人荫蒂免费视频| 首页综合国产亚洲丝袜| 中文字幕第22页| 久久综合九色综合欧美就去吻| 99热99这里只有精品| 欧美视频在线免费| 99久久久无码国产精品免费| 日韩成人在线视频网站| 黄色网页在线免费看| 欧美一级黑人aaaaaaa做受| 国产一区一区| 日韩免费三级| 亚洲免费激情| 五月六月丁香婷婷| 国产亚洲短视频| 久久久综合久久久| 欧美日韩国产首页| 香港一级纯黄大片| 欧美激情区在线播放| 精品久久福利| 欧美精品一区二区三区四区五区| 综合天堂av久久久久久久| av网址在线观看免费| 国产v综合v亚洲欧| 我要看一级黄色录像| 色综合亚洲欧洲| 高潮毛片7777777毛片| 日韩在线免费观看视频| 91av亚洲| 国产一区精品视频| 欧美激情在线| 日韩av自拍偷拍| 国产欧美1区2区3区| 成人免费看片98欧美| 日韩精品一区二区三区四区视频 | 黄色免费网址大全| 91影院在线观看| 国产精品99无码一区二区| 91麻豆精品国产91久久久久久久久| 国产三级电影在线| 欧亚精品在线观看| 日韩精品丝袜美腿| 男人插女人视频在线观看| 国产电影一区二区三区| 开心激情五月网| 欧美日韩激情一区| av网在线观看| 国产精品丝袜视频| 成人羞羞动漫| 久久久久久久久久久久91| 国产网红主播福利一区二区| 黄色一级片免费在线观看| 日韩精品专区在线影院重磅| 老司机免费在线视频| 国产欧美日韩高清| 欧美r级电影| 欧美一级xxxx| 亚洲视频免费看| 国产免费一区二区三区最新不卡| www.日本久久久久com.| 亚洲我射av| 99久久免费观看| 成人免费视频app| 日韩精品一卡二卡| 亚洲精品资源在线| 久久91导航| 亚洲国产欧洲综合997久久 | shkd中文字幕久久在线观看| 国产精品福利在线观看| 日韩精品四区| 亚洲一级片av| 亚洲午夜久久久久| 五月婷婷久久久| 国产精品xxx视频| 亚洲成人国产| 日韩少妇一区二区| 欧美丝袜美女中出在线| 成人免费一区二区三区视频网站| 国产精品免费在线免费| 99久久99久久精品国产片桃花| 久久久久久综合网| 亚洲国产另类精品专区| 亚洲人视频在线观看| 国产精品麻豆va在线播放| 国产高清久久| 成人区人妻精品一区二| 色综合久久综合网欧美综合网| 日韩欧美小视频| av色综合网| 三级欧美韩日大片在线看| 国产精品视频一区二区在线观看 | 韩日视频在线| 91免费欧美精品| 国产精品亚洲综合久久| 五月天精品在线| 欧美成人高清电影在线| 欧美性xxx| 蜜臀在线免费观看| 91在线观看下载| 国产人妖一区二区| 欧美资源在线观看| 自由日本语亚洲人高潮| 欧美老熟妇乱大交xxxxx| 91精品免费观看| 中文在线最新版地址| 一区二区三区免费看| 99视频精品免费视频| 一级黄色片视频| 1769国产精品| 欧美影院一区| 亚洲av成人无码久久精品 | 国产精品视频大全| 亚洲精品看片| 五月综合色婷婷|