好记忆不如烂笔头,再简单的知识,都可能被遗忘,所以能记录下点东西,就记录下来、、、


来说说一般小型的互联网公司的一般架构,欢迎拍砖指正。

1.一般互联网公司的特征:


Client : 用户多,流量大,请求多等,主要来源是PC机,Android 设备或者IOS设备等

Server : 要求反映迅速,处理业务复杂,性能要求高,大多会放在tomcat上,jboss等免费容器里。

DB : 主要 mysql,postgresql,mongodb 等主要以免费的数据库为主。

Cache : 流行的redis.

2.Session 共享


大家都知道 HTTP 请求是一种无状态的请求,每次请求都会在Server端生成一个sessionId,可是这个sessionId每次又都是不一样的,

尤其是在集群,分布式部署的时候,更是比较麻烦,无法做到一次登录,多次访问。所以为了解决一次登录,多次访问的问题,就需要做 session 共享。

而redis做为可替换 memchached而存在的新一代分布式缓存,自然是处理sessionId的理想选择.

3.集群部署

首先先说说什么是集群:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。

集群通俗的说就是:就是tomcat下的程序都是一样的,比方说给你了五台机器,每台机器上都有一个tomcat8,

每个tomcat下都有6个项目,6个项目一起运行实现了一套业务流程。

用一个机器,一个tomcat可以完成这套业务流程,但是却给了五台,这就是 集群。

集群的好处是:即便有四台服务器都挂掉了,但这套业务就可以正常运行,不会影响使用,只是性能会比较低。



4.分布式部署

容器间的分布式部署(伪分布式).



拿上面的例子来说,容器之间的分布式部署可以看做是在同一台机器上,有六个tomcat,通过nginx反向代理服务,正常情况下是这六个tomcat都运行正常,这套业务也就能正常使用。

但是要是其中有一台tomcat因为某种原因挂掉了之后,这套服务就挂掉了,此时只需要:ps aux|grep tomcat 命令看看哪个tomcat挂掉了,重启就ok了。彼此之间的管理和关联

不像是集群中那样紧密,但是要是这台机器挂掉,那就彻底的挂掉了。

机器间的分布式部署(正式).

就像容器之间的分布式部署一样,需要六台机器,每台机器放一个tomcat去实现一个业务模块,整个六台机器都正常运行的时候,这套业务才能正常运行,否则这套业务就会挂掉,这样

的好处是:即使某一台机器挂掉了,只要让这台机器能正常运行的话,就可以让这套业务跑起来,同伪分布式不同的是:坏掉一台机器,只是这套系统中的某个或某些功能不能使用。

5.负载均衡

负载均衡就是将负载(工作任务、访问请求等)进行平衡、分摊到多个操作单元(服务器、组件等)上进行执行,是解决高性能,单点故障(高可用,如果你是单机版网络,一旦服务器挂掉了,那么用户就无法请求了,但对于集群来说,一台服务器挂掉了,负载均衡器会把用户的请求发送给其他的服务器进行处理),扩展性(这里主要是指水平伸缩)的终极解决方案。

负载均衡设备为Nginx(Free),F5(很贵,但是很稳定) 等.