架构

LAMP网站架构方案分析

a 夏天 提交于 2019-12-30 23:29:30
 LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。   对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。下面我将从这几点对其一一讨论。    操作系统   Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating

LAMP网站架构方案分析

偶尔善良 提交于 2019-12-30 23:29:11
LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。   对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。下面我将从这几点对其一一讨论。    操作系统   Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating System

基于hadoop的BI架构

感情迁移 提交于 2019-12-30 01:42:16
BI系统,是企业利用数据驱动运营的一个典型系统。BI系统通过发掘企业运行过程中的数据,发现企业的潜在风险 、 为企业的各项决策提供数据支撑。 传统的BI系统通常构建于关系型数据库之上。随着企业业务量的增大和对用户行为实时提取分析的需要越来越高,传统的BI架构对实时性的分析和大数据量的分析已经无法满足,新的数据分析的解决方案便呼之欲出。 得益于hadoop对大数据和分布式计算的优势 、以及丰富的组件,使用hadoop进行BI架构便方便许多。 一个典型的基于hadoop的BI架构如下图所示: 该BI架构主要包括2部分:实时处理部分 、离线批处理部分。 实时处理部分: 功能主要是实时获取用户的网站 、app等访问记录,分析用户行为轨迹,其数据来源一般是访问日志。 数据流:通过flume实时拉取服务器的日志,并将其发送至spark和hadoop。spark利用spark structured streaming组件接收flume发送的日志数据,并在一定的窗口和周期下进行计算。提取出一些用户在此时的基本行为过程,并将结果存储至hbase。这一过程中,会涉及高频的数据读写和计算需求 、特别是flume和spark这一块的话对内存的需求量比较大,需要做好硬件配置的规划。同时将日志数据写入一份至hadoop,主要是为了做离线分析的需要。 离线批处理部分: 功能主要是对业务数据(如进销存等

KVM虚拟化技术(一)虚拟化简介

谁说我不能喝 提交于 2019-12-29 22:03:14
一 、虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化的类型:   全虚拟化   半虚拟化(涉及修改guestos内核,因此仅支持开源kernel的系统)   硬件辅助虚拟化(主板上开启虚拟化支持) 几种虚拟化软件简介 KVM 完全虚拟化 架构:寄居架构(linux内核);祼金属架构RHEV-H 特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。 I/O协议栈:KVM重用了整个Linux I/O协议栈,所以KVM的用户就自然就获得了最新的驱动和I/O协议栈的改进。 VmWare ESX 完全虚拟化 架构:裸金属架构 I/O协议栈:VMware选择性能,但是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈,会导致开发速度会减慢,你的硬件可能要等一段时间才会得到VMware的支持。 Citrix XenServer 半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化 架构

虚拟化技术(1)——介绍

只愿长相守 提交于 2019-12-29 22:02:03
什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 几种虚拟化软件介绍 RedHat KVM 虚拟化方式:完全虚拟化 架构:寄居架构(linux内核);祼金属架构RHEV-H 特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。 I/O协议栈:KVM重用了整个Linux I/O协议栈,所以KVM的用户就自然就获得了最新的驱动和I/O协议栈的改进。 架构图: VmWare ESX 虚拟化方式:完全虚拟化 架构:裸金属架构 I/O协议栈:VMware选择性能,但是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈,会导致开发速度会减慢,你的硬件可能要等一段时间才会得到VMware的支持。 架构图: Citrix XenServer 虚拟化方式:半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化 架构:裸金属架构 I/O协议栈:Xen选择了可维护这条道路,它将所有的I

应用架构的发展趋势

人走茶凉 提交于 2019-12-29 20:35:56
属性 信息 文档名称 应用架构的发展趋势 版本号 V0.0.0.0 文档修改日志 修改时间 修改人 修改描述 版本号 2019-12-29 15:23 宋全恒 新建应用架构的发展趋势 V0.0.0.0 1 简介 辛格的这本《Java设计模式及实践》是在11月28日看完的,三类设计模式、7大设计模式原则都在本书进行了阐述,自己也通过博客的输出尝试着及时的重复和强化关于这本书的记忆,总结博客的目的就是为了对这些材料能够强化记忆,在《高效记忆法》中,提高记忆效率的条件如下: 并且,记忆策略的主要原则如下图所示: 通过不断的总结,翻书页,目的很明确,就是不断的增强自己的知识基础,并且提高兴趣,因为人越是感兴趣的东西,注意力程度就会越高,在 程序员写个人技术博客的价值与意义 博文中,作者对于技术人员撰写博客的意义是如下阐述的: 确实,通过不断的在自己的专业领域深耕细作,不断加深对于技术的认识和理解,自己确实在这样的实践过程中取得了不少的进步,因此,写博客这个行为自己会坚持实践,并且在即将到来的2020年, 自己要坚持每周输出两篇博客 。自己会做到的。 2 应用架构的含义 开发应用程序之前,首先要确定的是要使用的架构设计。本文主要是对《设计模式及实践》第8章应用架构的梳理。应用架构(Software Architecture)在辛格认为,是在开发应用程序时,首先会有一系列的需求

Mysql架构和索引及性能优化

自古美人都是妖i 提交于 2019-12-28 21:37:17
第3章 Mysql架构和索引及性能优化 3.1 Mysql架构 1.逻辑架构图一: 2.逻辑架构图二: 3.执行流程图: 3.2 存储引擎介绍: * 多存储引擎是 mysql有别于其他数据库的一大特性; * 存储引擎是针对表的 * MySQL 5.5之后, 默认的存储引擎由 MyISAM变为 InnoDB 。 * 查看存储引擎 : show engines; Innodb Myisam 存储文件 .frm 表定义文件 .ibd 数据文件 .frm 表定义文件 .myd 数据文件 .myi 索引文件 锁 表锁、行锁 表锁 事务 ACID 不支持 CRDU 读、写 读多 count 扫表 专门存储的地方 索引结构 B+ Tree B+ Tree 3.1 索引的存储结构: B Tree和B+ Tree的特点与区别 * 树的高度一般都是在 2-4这个高度, 树的高度直接影响 IO读写的次数。 * 如果是三层树结构 ---支撑的数据可以达到20G,如果是四层树结构---支撑的数据可以达到几十T * B Tree和B+ Tree的最大区别在于非叶子节点是否存储数据的问题。B Tree是非叶子节点和叶子节点都会存储数据。 而 B+ Tree只有叶子节点才会存储数据,而且存储的数据都是在一行上,而且这些数据都是有指针指向的,也就是由顺序的。 非聚集索引 * 叶子节点只会存储数据行的指针

全面讲解分布式数据库架构设计特点

坚强是说给别人听的谎言 提交于 2019-12-28 14:26:54
行业背景 随着全球经济下行压力增大,中美贸易摩擦愈演愈烈,美国一系列的经济制裁和技术封锁使得我们有种被扼住咽喉的感觉,数据库作为基础软件中的重要一环有着很深的技术含量,在这样的大背景下国产数据库厂商开始发力,这其中分布式数据库如雨后春笋般出现,良性的竞争环境使它们都得到了长足的发展,其中不乏优秀的产品,本文主要挑选目前几个相对成熟数据库进行架构特点介绍。 分布式数据库总体架构 其实分布式数据库总体设计有两个思路和方向,一个是基于共享存储的架构(share everything),另一个是基于数据分片的架构(share nothing)。 共享存储的架构特点是底层存储共用一份数据池子,上层数据库server层可以弹性扩展,典型的案例像DB2 purescale,Oracle RAC,阿里云PolarDB等,这种架构的好处是天然适合做云数据库,比如阿里云,上层的sql引擎可以是mysql也可以是pg,而且可以无限扩展,底层的存储其实是一起的,用户申请只是申请几个上层的mysql或者pg server同时在底层存储开辟一块空间给用户,这样的话可以做到资源的弹性伸缩。这种架构的数据库其实严格意义上不能称之为分布式数据库。 数据分片架构的特点是底层数据通过一定的规则比如hash或者range让数据打散分别分布到不同的数据节点上,计算时底层多个节点共同参与计算,可以算是一种mpp并行计算的架构

MySQL系列 | 逻辑架构

天涯浪子 提交于 2019-12-28 09:32:46
MySQL逻辑架构 MySQL作为一个大型的网络程序、数据管理系统,架构非常复杂。下图大致画出了其逻辑架构。 Connectors   MySQL首先是一个网络程序,其在TCP之上定义了自己的 应用层协议 。所以要使用MySQL,我们可以编写代码,跟MySQL Server建立TCP连接,之后按照其定义好的协议进行交互。当然这样比较麻烦,比较方便的办法是调用SDK,比如Native C API、JDBC、PHP等各语言MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互。 Connection Management   每一个基于TCP的网络服务都需要管理客户端链接,MySQL也不例外。MySQL会为每一个连接绑定一个线程,之后这个连接上的所有查询都在这个线程中执行。为了避免频繁创建和销毁线程带来开销,MySQL通常会缓存线程或者使用线程池,从而避免频繁的创建和销毁线程。 客户端连接到MySQL后,在使用MySQL的功能之前,需要进行认证,认证基于用户名、主机名、密码。如果用了SSL或者TLS的方式进行连接,还会进行证书认证。 SQL Interface   MySQL支持DML(数据操作语言)、DDL(数据定义语言)、存储过程、视图、触发器、自定义函数等多种SQL语言接口。 Parser  

微服务 vs. SOA

流过昼夜 提交于 2019-12-28 05:28:27
微服务和面向软件架构(SOA)是软件开发的两个组件化体系结构。随着云计算时代的发展,更高粒度的微服务架构(MSA)已经从早期的SOA发展而来。然而,这两种方法仍然被广泛使用。SOA以企业为中心,而微服务则以应用程序为中心。 首先,我们将研究这些技术中的每一种,然后我们将比较和对比这两种技术。 理解面向服务架构 SOA是通过消息中间件进行服务间通信的服务集合。中间件层还支持多协议的互通。服务的范围可以一直延伸到企业内的子系统大小。 SOA通常被认为是在运行多操作系统(如Linux和Windows)的大型混合环境中集成不同系统的最好的选择。 理解微服务 另一方面,在微服务中,每个应用程序都被构造成一个小型服务的集合,围绕一个业务域建模。该体系结构使用应用程序编程接口(API)层而不是中间件,并且协议是轻量级的。微服务的最佳实践要求开发人员在设计之初使用API进行构建。 微服务在构建小的、分区良好的基于Web的系统方面工作得更好,这些系统给开发人员很大的控制权。每个服务都是为了实现特定的目的而设计的——比如激活订单或提供购物车服务的Web服务——并且在实现这一目的方面表现出色。 比较微服务和SOA SOA和微服务都通过用更容易管理的模块化组件替换旧的单体结构来简化软件开发。然而,SOA和MSA在包括一般体系结构、服务特性、组件共享方法、数据库支持等方面存在显著差异。 以下是一些关键区别: