小公司電商架構(gòu)一般發(fā)展
我這里所說的電商發(fā)展使用系統(tǒng)主要是用linux(以centos為主)的,非win,因為win收費,不開源做了很多限制,雖然有很多小公司用win各種破解版,要是別人告他一般都會贏。而且win也限制了運維的能力,所以win運維如果非高手級,在中國一般收入偏低。
小公司電商一般都是官網(wǎng)(最終目的是為了盈利,而非宣傳)剛剛開始的時候的構(gòu)架為:
初期架構(gòu)(幾臺)
1)web:
一般是1臺,一般選擇nginx,apache太厚重,不太適合現(xiàn)時代。
如果是php類網(wǎng)站nginx+php(php-fpm)
如果是java web類網(wǎng)站一般用的是nginx+tomcat
2)數(shù)據(jù)庫
一般是2臺,一主一從,一般采用mysql/mariadb,也有的公司用mongoDB
注:有的為了省錢,連web和mysql都放在一臺服務(wù)器的?;蛘遷eb與數(shù)據(jù)庫獨立
這個時期的構(gòu)架一般為:
LNMP:linux+nginx+mysql+php
LNMT:linux+nginx+mysql+tomcat
其中mysql也有的人會用mongoDB
3)緩存
一般為了減少壓力會用到緩存,前幾年用memcache多,現(xiàn)在用redis居多。
1.緩存網(wǎng)站使用頻率比較高的數(shù)據(jù),比如session、首頁、高頻繁搜索關(guān)鍵詞、網(wǎng)址
2.緩存數(shù)據(jù)庫數(shù)據(jù),比如mysql數(shù)據(jù),也是高頻率使用數(shù)據(jù)。
4)版本管理
版本管理一般都用git,現(xiàn)在svn少部分公司在用,有的用github,有的會自建gitlab
如果這種幾臺服務(wù)器的小公司,一般不會招運維,開發(fā)兼職維護(hù)
當(dāng)訪問量人數(shù)增加了,發(fā)現(xiàn)服務(wù)器壓力過大,那么一般會實現(xiàn)mysql讀寫分離。讀寫分離一般是開發(fā)在代碼中實現(xiàn)。
訪問量增加一臺web承受不起了,在前面增加一個CDN,而并非增加多一臺web,實現(xiàn)負(fù)載均衡。
發(fā)展期構(gòu)架(幾十臺)
有幾十臺服務(wù)器維護(hù)一般有2種情況:
1. 公司項目多,要么是自己,要么就是外包的,但架構(gòu)不變,也是初期的構(gòu)架。
2. 單一個網(wǎng)站增加了,一臺web承受不起,需要實現(xiàn)七層負(fù)載均衡、框架調(diào)整,業(yè)務(wù)劃分、分庫(也一樣也用不到分表)
無論上面哪種情況,這時候一般都會用到運維,在初期構(gòu)架上會添加一些東西,如
1)監(jiān)控
一般會加入監(jiān)控了,監(jiān)控類zabbix比較多
2)web群集
一般使用nginx或haproxy反代+負(fù)載均衡,實現(xiàn)web群集功能
3)數(shù)據(jù)庫群集
mysql數(shù)據(jù)庫一般還是以主從為主,會做業(yè)務(wù)劃分,一般是好幾組主從
mongoDB數(shù)據(jù)庫一般是副本集為主,也會分好幾組,是按業(yè)務(wù)劃分的
redis:主從,或者使用比如哨兵Sentinel、豌豆莢codis比較多
4)消息隊列
比如像RabbitMQ、Kafka等消息隊列也會用上
5)CI持續(xù)集成
有些公司開始會用gitlab CI+jenkins實現(xiàn)
注:jenkins教程可以看它的官網(wǎng),是中文的?https://jenkins.io/zh/doc/或《Jenkins 2權(quán)威指南》
6)docker
為了更好的配合gitlab CI,快速搭建環(huán)境或部署,不少小公司會嘗試使用主流的技術(shù),docker就是比較火的一種,往往它會結(jié)合k8s
結(jié)語
此之前我以幾十臺機(jī)子為主的電商運維所要求的一般技術(shù),做了環(huán)境搭建,從 《centos7最小化安裝》、LNMP/LNMT、rysnc、vsFTP、mysql主從、mongoDB主從、負(fù)載均衡nginx/haproxy、gitlab等小公司的運維搭建都寫完了
在第3系列寫了 docker、ansilbe、saltStack,下一步發(fā)ELK、k8s
以上的知識基本上已經(jīng)夠小公司的運維用了,還有運維用的python我也有推薦書箱,靠自己學(xué)。
我只能帶你最難的搭建部分、進(jìn)階可以看一下官方文檔、書籍,深入一般分析一下設(shè)計、源碼等,這些都靠你們自己了。