小规模低性能低流量网站架构设计

很多Web架构的文章都在谈大规模,高流量,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳也说过,“过早优化是万恶之源“),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何架构。拥抱熟知的技术动手构建站点的时候,不要到处去问别人该用什么
阅读本文

Redis:高性能文件缓存key-value储存

1.前言  a.Redis是一个开源,先进的key-value(键/值对)存储,并且勇于构建高性能,可扩展的Web应用程序的完美解决方案  b.Redis和Memcached的对比    b.1 Redis数据库完全在内存中,使用磁盘仅用于持久性    b.2 相比较许多键值对存储,redis拥有更加丰富的数据类型,Redis提供的五种数据类型: strings、map、 list、sets、 s
阅读本文

dubbo初探

DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案官方地址:http://dubbo.io/架构:节点角色说明:Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次调和调用时间的监控中心。Container: 服务运行容器。调用关系说明:0. 服务容器负
阅读本文

浅谈 《大型网站技术架构》 五六七章

一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的ht
阅读本文

InnoDB与MyISAM理论对比

MySQL的数据库引擎: InnoDB与MyISAMInnoDB特点:支持ACID事务(具有提交,回滚和崩溃恢复能力),支持存储过程,视图,支持行级锁定,支持外键,处理巨大数据量时拥有最大性能(可以说它的CPU效率是其他基于磁盘关系数据库引擎所不能匹敌的)。表可以是任何尺寸,不支持全文类型的索引。应用场景:    以INSERT、UPDATE为主的应用。    在需要高性能的大型数据库的应用中。
阅读本文

高性能Mysql(第一章MySQL架构与历史)

逻辑架构 mysql的逻辑架构分为3层,连接线程处理。服务器的核心功能,查询解析、分析、优化、缓存以及所有的内至函数。存储引擎,负责MySQL中数据的存储和提取,每个存储引擎都有它的优势和劣势,服务器通过API与存储引擎进行通信,这些接口屏蔽了不同存储引擎之间的差异。并发控制读写锁通常也称为共享锁和排他锁,读锁是共享的,多个客户在同一时间可以同时读取同一个资源,而互不干扰。写锁则是排他的,也就是说
阅读本文

大型网站应该由哪些部分组成?

一个大型的网站网站应该由如下6个子系统组成 负载均衡系统反向代理系统Web服务器系统分布式存储系统底层服务系统数据库集群系统 为什么要做高并发系统设计?事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应
阅读本文

高并发分布式系统中生成全局唯一Id汇总

前几天研究数据库分表分库的问题,其中有一个关键的地方就是生成唯一键的问题,假如数据表有1亿条数据,而且还在不断的增加,这里我们就需要考虑到分表分库,假设我们采用Hash或者是用户取模求余的方法将这个表拆分成10个表,每个表的结构相同,其中有一个主键id,那么10个表中的id需要唯一不同,在单表的时候,使用数据表自增长是没有问题的。当分成10个表后,就无法用到数据库自增长了。当到这里的时候突然发现o
阅读本文

DapperPoco

为什么要重复造轮子因为现有的轮子都在某些方面不太令我满意,下面我来一一点评一下,欢迎拍砖。Entity Framework我喜欢傻瓜化使用方式的框架,同时又不失灵活性。EF虽然使用起来足够简单,但却不够灵活。例如,在EF Core中你无法用原生SQL写一个多表连接查询(返回的结果是多表连接的结果)单表简单条件查询还好,多表查询时生成的SQL性能实在不敢恭维,我更喜欢自己写SQL,可控性更高,心里有
阅读本文

大型网站架构阅读笔记

12306铁道购票网站上,由此可见这样的事情绝非偶然。大型网站架构主要是为了解决每天要被大量用户访问,具有大型数据操作的大型网站的问题。首先将逻辑处理,数据库和文件分开处理,原因是他们具有不同的职责而且对于其性能的要求也不尽相同。其次是对业务进行拆分,大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,如大型购物交易网站就会将首页,商铺,订单,卖家,买家等拆分
阅读本文

RabbitMQ、Redis、Memcache

MemcachedMemcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。Memcached安装和基本
阅读本文

Golden Gate 特点及用途

Golden Gate 特点1.实时数据复制2.异构平台数据同步3.支持断点续传,不影响系统继续运行4.高性能,属于轻量级软件5.保证数据引用完整性和事务一致性6.整合 ETL Tools   Message Service7.灵活的拓扑结构     1:1    1:N     N:1    N:N  双向复制8.复制冲突检测和解决9.支持数据压缩和加密10. TCP/IP      WAN
阅读本文

mongodb选型问题

一、Mongodb的介绍MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。 MongoDB 工作在收集和文件的概念。数据库数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。集合集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不
阅读本文

C/S和B/S架构

C/S和B/S是当今网络开发架构的两大主流技术,前者由美国Borland公司最早研发,后者则由美国Microsoft公司主导研发。     C/S(Client/Server)结构即客户机/服务器结构,将任务合理分配到Client端和Server端来实现,服务器通常采用高性能的PC、工作站或小型机,采用大型数据库系统,如Oracle、Sybase、Informix或SQL Server。客户端需要
阅读本文

MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

MySQL中的存储引擎:1、存储引擎的概念2、查看MySQL所支持的存储引擎3、MySQL中几种常用存储引擎的特点4、存储引擎之间的相互转化 一、存储引擎:1、存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。2、MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广
阅读本文

BI大数据名词术语

A 聚合 (Aggregation) – 搜索、合并、显示数据的过程 算法 (Algorithms) – 可以完成某种数据分析的数学公式 分析法 (Analytics) – 用于发现数据的内在涵义 异常检测 (Anomaly detection) – 在数据集中搜索与预期模式或行为不匹配的数据项。除了“Anomalies”,用来表示异常的词有以下几种:outliers, ex
阅读本文

Python笔记001-----简介及常用的库

1.Python是一种解释性语言,大部分代码要比编译型语言(如C++,java等)运行要慢点多。2.对于高并发,多线程的应用程序而言,Python并不是理想语言,python有全局解释器锁(Global Interpreter Lock, GIL),放置解释器同时执行多条Python字节码指令的机制。并不是说Python不能执行真正的多线程并行代码,只不过这些代码不能在单个Python进程中执行而
阅读本文

Vectorized Execution Engine in MaxCompute 2.0简介

前言    在《数据库系统中的Code Generation技术介绍》一文中,我们阐述了代码的CPU执行效率对于大规模分布式OLAP系统的重要性。现在简单总结如下:OLAP系统中查询往往比较复杂,比如多表Join, 各种聚合函数以及窗口函数,其中涉及大量的Hash计算(比如采用Hash Join, Hash Aggregation),排序(比如采用Merge-Sort Join)操作,CPU开销比
阅读本文

Java 8 中的 Streams API 详解

为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象
阅读本文