随笔 - 410
文章 - 0
评论 - 519
阅读 -
147万
07 2017 档案
中间件(5)负载均衡
摘要:对于使用集群,负载均衡组件是必不可少的。包括在应用层和服务层都可以使用负载均衡。 负载均衡 我了解的负载均衡分两种,使用硬件:F5和A10,和使用开源软件:Nginx和LVS。 这里先做个记录,后面研究了之后再来补充。
阅读全文
中间件(4)搜索引擎
摘要:搜索引擎在大型网站中也非常重要,尤其是对于大数据的处理方面,比如日志的实时收集和分析。 搜索引擎 我研究的是ElasticSearch,最好要研究整个ELK解决方案。 先记录在这里,等研究完了再来完善!!!
阅读全文
中间件(3)NoSQL
摘要:NoSQL最常见的解释是non-relational,或者not only SQL,从字段意思上就可以看出,它是指非关系型数据库的统称。 NoSQL诞生的背景 随着大型网站分布式架构的发展,使用传统关系型数据库在以下几个方面显得力不从心: 1,对数据库高并发读写 随着分布式架构和微服务的流行,数据库
阅读全文
中间件(2)消息队列
摘要:消息队列也是构建大型网站架构过程中非常重要的一个中间件。 消息队列 使用过消息队列的同学都知道,消息队列最常用的两个场景是: 1,解耦,一般用在大的网站进行业务拆分的时候,用于各应用之间进行消息通讯。 2,异步,针对那些不需要同步执行,可以晚点执行的操作都可以使用异步,比如发送邮件和短信,实际上使用
阅读全文
中间件(1)分布式缓存
摘要:为了提高网站性能,一般都会使用到缓存,缓存的数据源包括数据库,外部接口等,缓存一般分为两种,本地缓存和分布式缓存,这里主要总结的是分布式缓存。 Memcached vs Redis 最常用的分布式缓存是Redis和Memcached,它们都是分布式缓存技术中的一种,可能大部分的开发人员都听说或者接触
阅读全文
大型网站架构演进(9)服务化
摘要:随着业务越拆越小,而且各个应用又是独立部署和维护的,这样的架构存在以下问题: 1,数据库连接数的问题,如果各个应用都连接现有数据库,当使用集群和并发访问量大的情形下,就会导致数据库连接数超过限制。当然,如果各个应用都有自己的数据库,则不存在这个问题。 2,代码复用的问题,有些基础信息在各个应用中都存
阅读全文
大型网站架构演进(8)业务拆分
摘要:大型网站为了应对日益复杂的业务需求,通过使用分而治之的手段将整个网站的业务分成不同的产品线,然后交给不同的开发团队负责。这样一方面方便应用的扩展和维护,同时不同的应用对应不同的数据库,也减小了原来所有业务数据都在一个数据库的压力。 业务拆分 原来一个网站拆分成多个不同的应用后,每个应用都是独立部署维
阅读全文
大型网站架构演进(7)数据库拆分
摘要:能过数据库的读写分离和使用NoSQL,以及搜索引擎后,能够降低主库的压力,解决数据存储方面的问题,不过随着业务的继续发展,我们的数据库主库还是会遇到性能瓶颈,所以为了减小数据库主库的压力,我们有数据库垂直拆分和水平拆分两种方式。 数据库拆分 数据库拆分有两种方法,垂直拆分和水平拆分。 垂直拆分 垂直
阅读全文
大型网站架构演进(6)使用NoSQL和搜索引擎
摘要:随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系型数据库技术(即NoSQL)和非数据库查询技术如搜索引擎。NoSQL数据库一般使用MongoDb,搜索引擎一般使用ElasticSearch,最好可以研究ELK整套解决方案。 使用NoSQL和搜索引擎 NoSQL和搜索
阅读全文
大型网站架构演进(5)数据库读写分离
摘要:在使用缓存后,使大部分的数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(包括未命中缓存的,和缓存过期的)和全部的写操作需要访问数据库,当网站的访问量继续增加后,数据库会因为负载压力过高导致成为网站的性能瓶颈。 目前大部分的主流数据库都提供了主从热备功能,通过配置两台数据库的主从关系,
阅读全文
大型网站架构演进(4)使用应用服务器集群
摘要:使用应用服务器集群是解决高并发的常用手段,当一台应用服务器的处理能力不足时,不要企图更换配置更高的服务器,对于大型网站而言,不管多么强大的服务器,都满足不了持续增长的业务需求,在这种情况下,更好的做法是增加一台应用服务器去分担原来服务器的压力。因为这样使得系统的可扩展和可伸缩性更好。 使用应用服务器
阅读全文
大型网站架构演进(3)使用缓存改善网站性能
摘要:网站的访问也是遵循二八定律:80%的业务访问集中在20%的数据上,如果我们把这20%的数据做缓存,是不是可以减轻数据库的访问压力呢?在项目开发过程中,我们通常将一些基础信息缓存起来,比如商旅系统中的国家,城市,航空公司,机场和航站楼信息。 使用缓存改善网站性能 缓存一般分为两种,本地缓存和分布式缓存
阅读全文
大型网站架构系列
摘要:这个系统总结了在搭建大型网站的过程中,对于架构的搭建,以及选择支撑架构实现的中间件的相关经验。 大型网站架构演进(1)单机网站 大型网站架构演进(2)数据库与应用服务器分离 大型网站架构演进(3)使用缓存改善网站性能 大型网站架构演进(4)使用应用服务器集群 大型网站架构演进(5)数据库读写分离 大
阅读全文
大型网站架构演进(2)数据库与应用服务器分离
摘要:随着用户量和并发数的增加,单台服务器出现了性能问题,此时必须要将应用程序和数据库分离,分离后整个网站变成三台服务器了:应用服务器(或称web服务器),数据库服务器和文件服务器。这三台服务器对服务器的配置要求是不一样的,应用服务器需要处理大量的业务逻辑,所以需要更快更强大的CPU,数据库服务器需要快速
阅读全文
大型网站架构演进(1)单机网站
摘要:初始阶段的网站一般访问量都很小(QPS<500),此时只需要一台服务器就足够,应用程序,数据库和文件都放在这一台服务器上。如果是.net的话,通常操作系统使用windows server,应用程序开发使用asp.net,然后应用程序部署在IIS上,数据库使用sql server。 单机网站 单体单库
阅读全文
IIS与asp.net管道
摘要:我们在基于asp.net开发web程序,基本上都是发布部署到安装了IIS的windows服务器上,然后只要用户能够访问就算任务完成了,但是很少静下心来想想这背后到底发生了什么,那么这个系列就来总结下asp.net的基础原理。 asp.net是什么 我们做web开发的可以说时时刻刻都在跟asp.net
阅读全文
.net基础系列
摘要:这里汇总了.net基础的相关文章,方便查阅! .net基础 参考资料 http://www.cnblogs.com/JeffreyZhao/archive/2009/08/05/from-delegate-to-others.html http://www.cnblogs.com/JimmyZhan
阅读全文
web站点和windows服务项目发布时如何排除指定文件
摘要:在发布asp.net站点和windows服务项目时,有的时候这样的需求:msbuild编译之后发布到服务器指定目录时要排除指定文件,比如通过jenkins构建时,不希望覆盖原来的Web.config和App.config,那么该如何排除呢? web站点项目 比如不希望发布Web.config文件,有
阅读全文
GC垃圾回收
摘要:我们在开发需求的时候,可能很少关注到垃圾回收,因为我们绝大多数的时候都是使用的托管资源,托管资源的内存回收.net已经帮我们做了,但是.net的内存回收不是实时的,所以我们还是要关注下.net的垃圾回收。 什么是GC GC即Garbage Collection,用一句话总结就是:.net内置的一种垃
阅读全文
多线程(7)多线程中的异常处理
摘要:多线程使用过程中,除了线程同步的问题要考虑外,异常处理也是经常要面对的事情。 默认主线程捕获不到异步线程的异常 如下代码: 1 namespace ConsoleApplication29 2 { 3 class Program 4 { 5 static void Main(string[] arg
阅读全文
多线程(6)线程同步
摘要:使用多线程很容易,但是如果多个线程同时访问一个共享资源时而不加以控制,就会导致数据损坏。所以多线程并发时,必须要考虑线程同步(或称线程安全)的问题。 什么是线程同步 多个线程同时访问共享资源时,使多个线程顺序(串行)访问共享资源的机制。 注意: 1,共享资源,比如全局变量和静态变量。 2,访问,一般
阅读全文