浅谈网络架构的设计
接触Linux有2年多了,我呢也曾经做过一些项目、也曾对网络的维护做过一些优化(效果不得而知)、后期网络架构的从新设计。个人水平呢,自我认为最起码比菜鸟强,比老鸟弱。当初在选择该走什么路的时候,自己犹豫了(可能,梦想太大不易实现)。不过呢,在此要感谢马哥,我的技术也是从他那里学来的。
先说一些题外话,期间面对了找工作。找工作,感觉现在的我和最初学完的我有很大的区别:懂得的似乎比最初很少,最初的时候,面对面试官的情况是,什么都知道、什么都会做、什么都敢说(毕竟学的时候,学的东西多而广),但是不能细问毕竟没有工作经验、没有项目经验,唯一的目的只是进去再说;现在呢,当从一家公司辞职后找工作,恍然间发现自己比以前胆小了,知道的比以前也少了,最后想想应该是,在公司要做的很多时候是重复性的工作,知道最多的也就是工作的和自己所感兴趣的,于是面对面试官呢,没有了紧张、没有了压力,该怎么说就怎么说。记得曾有家面试官电话面试,问我了一些问题:“网站架构你怎么设计”、“LVS搭建某个配置文件”等等,我就直接回答:“这需要根据具体情况选择不同软件设计的”、“LVS配置文件Google去找一下”(他奶奶的,我搭建时公司有F5干嘛要用lvs),我就那是纳闷,现在百度、谷歌这么发达又有什么解决不了的呢,真真解决不了还有懂的人在,问一下不就行啦。公司招人,做的事不就是那些破事吗,大街上随便找个人,让他天天做,只要不是傻子绝对也能做;一个人的价值在什么,不是技术多高、不是文凭多高、也不是厂商认证多高,而是一个人的处理问题能力和学习能力。一些500强之类的公司,在招人的时候不是还有给你培训个半年么;当然,有些公司希望招能直接上手的人,但是人家走的时候可是丝毫不留情了,一句话“此处不留爷,自由留爷处”。
好了,不说废话了。那就谈谈网络架构的设计吧,其实网络架构也是从马哥那里学来的,之后,又在老男孩、青梅煮酒里面看了看,在这里粗劣的浅谈一下:
其实设计网络架构,最最直接的目的是达到资源的高效性即高可用。在底层电源采用双电源、双线路、双网卡,交换路由方面的,则采用链路冗余、路由最佳路径选择,系统、软件方面采用集群做负载(我在集群高可用文章中,详细的介绍有)。好了,这样呢就实现了初步架构的设计了,服务什么的只要大家好就运行了,下面再说应用层的架构设计(以网站为主)。
曾在一篇博客中看到过,好像是老男孩的,反正记不清了,说:一切应用尽量往前推。之后想了想,也对。比如一个网站,首先一台做WEB、一台做应用、一台做数据库,这样成了健全的网站了,但是他的并发并可能只有100或者不到而随着应用的推广已经出现了瓶颈,这个时候就开始解决了,那就用2台做web,之后发展,瓶颈出现在数据库那一块,那就加服务器做集群负载在不行把应用也做成集群,但是当再次出现瓶颈是,这个时候可以增加缓存了,比如web增加缓存(squid、varnish软件做),再不行在数据库上使用memcache做数据库缓存,如果最后还出现瓶颈,那么进行优化了,这样网站的并发就能达到了很大值了,但是网站架构初步设计好了,那么就要把监控也要考虑进去。现在的网站,没有监控是不行了。做完后,这样呢网站的设计也就成了。
在做项目的时候呢,要根据实际情况去设计。当资源不够的时候,要学会采用其他方法代替,总之呢,所谓的优化、架构,其实不过是两个字--分离。就是把能分的尽量分到其他的机器上,能做集群就采用集群,能用缓存就用缓存。
最后说一下,技术是不值钱的,人人都会(只是时间的问题)。想必大家都知道,很多时候你的上司有时候比你还不如,不过呢,等你到了那个阶段的时候,也是这样的,那个时候所关心的已经不是某个技术难题的破解了。如有不足见轻原谅。
网上找了一个图,感觉很是不错,在此与大家分享一下:
上面的图呢,就是一个大型高可用的网站设计思路。要想网站具有高可用,除了群集,就是缓存;总之,尽量将数据往前推,是设计网站的思路根据。
阅读(1662) | 评论(1) | 转发(0) |