小公司电商架构一般发展
我这里所说的电商发展使用系统主要是用linux(以centos为主)的,非win,因为win收费,不开源做了很多限制,虽然有很多小公司用win各种破解版,要是别人告他一般都会赢。而且win也限制了运维的能力,所以win运维如果非高手级,在中国一般收入偏低。
小公司电商一般都是官网(最终目的是为了盈利,而非宣传)刚刚开始的时候的构架为:
初期架构(几台)
1)web:
一般是1台,一般选择nginx,apache太厚重,不太适合现时代。
如果是php类网站nginx+php(php-fpm)
如果是java web类网站一般用的是nginx+tomcat
2)数据库
一般是2台,一主一从,一般采用mysql/mariadb,也有的公司用mongoDB
注:有的为了省钱,连web和mysql都放在一台服务器的。或者web与数据库独立
这个时期的构架一般为:
LNMP:linux+nginx+mysql+php
LNMT:linux+nginx+mysql+tomcat
其中mysql也有的人会用mongoDB
3)缓存
一般为了减少压力会用到缓存,前几年用memcache多,现在用redis居多。
1.缓存网站使用频率比较高的数据,比如session、首页、高频繁搜索关键词、网址
2.缓存数据库数据,比如mysql数据,也是高频率使用数据。
4)版本管理
版本管理一般都用git,现在svn少部分公司在用,有的用github,有的会自建gitlab
如果这种几台服务器的小公司,一般不会招运维,开发兼职维护
当访问量人数增加了,发现服务器压力过大,那么一般会实现mysql读写分离。读写分离一般是开发在代码中实现。
访问量增加一台web承受不起了,在前面增加一个CDN,而并非增加多一台web,实现负载均衡。
发展期构架(几十台)
有几十台服务器维护一般有2种情况:
1. 公司项目多,要么是自己,要么就是外包的,但架构不变,也是初期的构架。
2. 单一个网站增加了,一台web承受不起,需要实现七层负载均衡、框架调整,业务划分、分库(也一样也用不到分表)
无论上面哪种情况,这时候一般都会用到运维,在初期构架上会添加一些东西,如
1)监控
一般会加入监控了,监控类zabbix比较多
2)web群集
一般使用nginx或haproxy反代+负载均衡,实现web群集功能
3)数据库群集
mysql数据库一般还是以主从为主,会做业务划分,一般是好几组主从
mongoDB数据库一般是副本集为主,也会分好几组,是按业务划分的
redis:主从,或者使用比如哨兵Sentinel、豌豆荚codis比较多
4)消息队列
比如像RabbitMQ、Kafka等消息队列也会用上
5)CI持续集成
有些公司开始会用gitlab CI+jenkins实现
注:jenkins教程可以看它的官网,是中文的 https://jenkins.io/zh/doc/或《Jenkins 2权威指南》
6)docker
为了更好的配合gitlab CI,快速搭建环境或部署,不少小公司会尝试使用主流的技术,docker就是比较火的一种,往往它会结合k8s
结语
此之前我以几十台机子为主的电商运维所要求的一般技术,做了环境搭建,从 《centos7最小化安装》、LNMP/LNMT、rysnc、vsFTP、mysql主从、mongoDB主从、负载均衡nginx/haproxy、gitlab等小公司的运维搭建都写完了
在第3系列写了 docker、ansilbe、saltStack,下一步发ELK、k8s
以上的知识基本上已经够小公司的运维用了,还有运维用的python我也有推荐书箱,靠自己学。
我只能带你最难的搭建部分、进阶可以看一下官方文档、书籍,深入一般分析一下设计、源码等,这些都靠你们自己了。