架构

LNMP架构搭建---源码编译MYSQL,PHP,nginx

你。 提交于 2020-03-01 12:04:56
LNMP架构搭建—源码编译MYSQL,PHP,nginx 文章目录 LNMP架构搭建---源码编译MYSQL,PHP,nginx 1.什么是LNMP? 2.LNMP的工作原理 3.MYSQL数据库的源码编译 4.PHP源码编译 5.nginx的源码编译 1.什么是LNMP? LNMP = Linux+Nginx+Mysql+PHP LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。 LNMP和LAMP唯一不同是指提供web服务的是Nginx而不是Apache :在Apache中,PHP是作为一个模块存在的。 而在Nginx中,PHP是作为一个独立服务存在的,这个服务叫做php-fpm. ;Nginx直接处理静态请求,动态请求会转发给php-fpm. 2.LNMP的工作原理 浏览器发送http request请求到服务器(Nginx) 服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序) PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。

微服务架构介绍

岁酱吖の 提交于 2020-03-01 12:01:31
技术架构演变 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 缺点:随着应用功能的增多,代码量越来越大,越来越难维护,那怎么解决代码一体化的问题? 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 缺点:垂直架构中相同逻辑代码需要不断的复制,不能复用。每个垂直模块都相当于一个独立的系统。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。 缺点:服务越来越多,需要管理每个服务的地址,调用关系错综复杂,难以理清依赖关系,服务状态难以管理,无法根据服务情况动态管理。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。 此时

RESTful协议【软件架构】

折月煮酒 提交于 2020-03-01 08:39:49
概述 REST(英文: Representational State Transfer ,简称 REST )描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。 在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。 值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。 原则条件 REST 指的是一组架构 约束条件 和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合 云计算 之类的环境。客户端可以缓存数据以改进性能。 在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI

基于微服务架构、运行于容器中的.NET Core示例应用eShopOnContainers

与世无争的帅哥 提交于 2020-03-01 08:01:22
eShopOnContainers 是 《 .NET Microservices – Architecture for Containerized .NET Applications 》这本微软出品的电子书中的示例应用程序。 This guide is an introduction to developing microservices-based applications and managing them using containers. It discusses architectural design and implementation approaches using .NET Core and Docker containers. To make it easier to get started with containers and microservices, the guide focuses on a reference containerized and microservice-based application that you can explore. The sample application is available at the eShopOnContainers GitHub repo . eShopOnContainers 的

一文看懂docker容器技术架构及其中的各个模块

风格不统一 提交于 2020-03-01 01:24:45
概述 今天主要简单介绍下docker的技术架构及其中组成的各个模块。 技术架构 distribution 负责与docker registry交互,上传洗澡镜像以及v2 registry 有关的源数据 registry负责docker registry有关的身份认证、镜像查找、镜像验证以及管理registry mirror等交互操作。 image 负责与镜像源数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入、导出操作。 reference负责存储本地所有镜像的repository和tag名,并维护与镜像id之间的映射关系。 layer模块负责与镜像层和容器层源数据有关的增删改查,并负责将镜像层的增删改查映射到实际存储镜像层文件的graphdriver模块。 graghdriver是所有与容器镜像相关操作的执行者。 1、docker client docker client 是docker架构中用户用来和docker daemon建立通信的客户端,用户使用的可执行文件为docker,通过docker命令行工具可以发起众多管理container的请求。 docker client发送容器管理请求后,由docker daemon接受并处理请求,当docker client 接收到返回的请求相应并简单处理后,docker client 一次完整的生命周期就结束了

Web服务器Nginx多方位优化策略

纵饮孤独 提交于 2020-02-29 21:44:49
Nginx(读音engine x)服务器由于性能优秀稳定、配置简单以及跨平台,被越来越多的公司和个人所采用,现已成为市场份额继Apache之后的第二大Web服务器。各大小网站论坛博客也介绍说明了Nginx从安装到优化的各种配置。不过看了很多这些相关Nginx的文档之后,发现一个比较大的问题,就是这些文档基本也就从两个方面着手,一是修改Nginx的配置文件,二是调整操作系统的相关内核参数;而且文档说明也不够明了,缺乏比较系统级别的优化。本文将从Nginx源码编译安装开始,到修改配置文件,调整系统内核参数以及架构四个方面着手分别介绍如何优化。 一. 安装 (1) 精简模块 Nginx由于不断添加新的功能,附带的模块也越来越多。很多操作系统厂商为了用户方便安装管理,都增加了rpm、deb或者其他自有格式软件包,可以本地甚至在线安装。不过我不太建议使用这种安装方式。这虽然简化了安装,在线安装甚至可以自动解决软件依赖关系,但是安装后软件的文件布局过于分散,不便管理维护;同时也正是由于存在软件包之间的依赖关系,导致当有安全漏洞、或者其它问题,想要通过更新升级Nginx新版本时却发现yum、deb源还未发布新版本(一般都落后于官网发布的软件版本)。最重要的是采用非源码编译安装的方式,默认会添加入许多模块,比如邮件相关、uwsgi、memcache等等,很多网站运行时这些模块根本未用到

目前国内最好用快速开发平台,能帮助你减少90%的重复工作

纵然是瞬间 提交于 2020-02-29 17:46:16
快速开发平台 是指一个二次开发软件框架,用户可以在这个框架以不写代码或少些代码的方式进行业务系统的开发工作。快速开发平台不同于一般的开发工具,它不只是提供一些基础的功能模块,而且抽象和封装了用户开发一个业务系统所需要的全部功能,使得用户能够不编写代码就能开发出完整的系统。它提供的常用功能包括:页面交互设计、数据管理、用户管理、权限控制、工作流等。 一、减少90%的重复工作 力软是一款基于代码生成器的智能 快速开发平台 ,可以帮助解决项目中90%的重复工作,让开发者更多关注业务逻辑。 既能快速提高开发效率,帮助公司节省人力成本,同时不失灵活性。 二、主体架构 1.主架构为基于ASP.netMVC的B/S架构 力软开发平台 使用了当前最为流行的架构组合,该组合对于大部分开发人员来说都非常熟悉,使用时基本不需要二次学习,可以直接着手开发。 1. 前端UI 基于Jquery +Bootstrap,界面简洁大气,UI 底层库提供了大量UI 组件开发者轻松就能完成各种炫丽的界面。不像 EXT,EasyUI 那样外观千篇一律,另外也省去了 UI 的授权费用,毕竟EXT,EasyUI 都需要收费的。 3.采用 Ajax 技术,页面无刷新,具有 C/S 系统一样的良好的用户体验。此外采用 Ajax 交互使得前端不关心后台是何种技术架构(java、.net、php),日后后台升级不会影响前台功能。 4

架构十三:引入企业级服务总线

时光总嘲笑我的痴心妄想 提交于 2020-02-29 14:18:07
1.简要说明 什么事EGB ESB是Enterprise Service Bus的简称,中文翻译为企业服务总线,企业服务总线是一个实现系统间集成和互联互通的重要技术架构,可以理解为是一种消息和服务集成的中间件平台。 ESB解决了什么问题 ESB为了解决刚才说的问题,就需要保证多个应用系统的服务接入,协议转换,提供可靠的消息传输,数据格式转换,基于内容路由等功能。 ESB的服务接入方式 RPC 远程过程调用(面向方法) SOAP 面向服务的架构(面向消息) REST 资源的状态转变(面向资源) 2.架构图 参考资源 关于ESB(企业服务总线) 来源: CSDN 作者: 谦奕爸爸 链接: https://blog.csdn.net/weinichendian/article/details/104571694

Java架构直通车——ThreadLocal实现RabbitMQ消息的批量发送

做~自己de王妃 提交于 2020-02-29 12:25:15
文章目录 引入 什么是ThreadLocal 使用ThreadLocal 引入 之前,我们完成了 单个消息的发送,以及单个消息发送的多线程池化 。 这里,我们继续完成批量发送消息的封装。 因为rabbitMq本身是不支持批量发消息的,所以我们可以直接使用上文所创建的连接池来发送。 最简单的代码是这样的: # ProducerClient . class @Override public void send ( List < Message > messages ) throws MessageRuntimeException { messages . forEach ( message - > { message . setMessageType ( MessageType . RAPID ) ; } ) ; rabbitBroker . sendMessages ( messages ) ; } # RabbitBrokerImpl . class @Override public void sendMessages ( List < Message > messages ) { messages . forEach ( message - > { sendKernel ( message ) ; } ) ; } 这里使用ThreadLocal

三、服务化系统容量评估和性能保障

一曲冷凌霜 提交于 2020-02-29 10:50:37
文章目录 一、架构设计与非功能质量 架构设计:软件架构方法论中一般将架构设计分为三个阶段 需求分析和整理: 概要设计 详细设计 二、全面的非功能质量需求 概述: 核心非功能质量指标 其他非功能质量指标 具体指标 应用服务器 数据库 缓存 消息队列 三、典型的技术评审提纲 现状 方案描述 方案对比 风险评估 工作量评估 四、性能和容量评估 量级评估标准: 通用标准 MySQL: Redis: Kafka: 五、性能评估参考标准 常用的应用层性能指标参考标准(使用PC X86桌面机器的经验值) 通用标准: MySQL Redis Kafka DB2 常用的系统性能指标参考标准 寄存器和内存 硬盘I/O 六 性能测试方案的设计与实践 七、有用的压测工具 一、架构设计与非功能质量 架构设计:软件架构方法论中一般将架构设计分为三个阶段 需求分析和整理: 梳理所有用例和场景,并抽象出系统面向的用户和对象,梳理对于每个用户和角色应该提供的功能需求、非功能需求和限制。 非功能需求包括:高可用性、高性能、可伸缩、可扩展等 然后对功能性需求和非功能性需求进行整理,识别核心需求和特色需求 最后以核心需求和特色需求为根本来展开架构设计。 概要设计 对整个系统进行模块划分,并定义良好的模块之间的关系和交互。 详细设计 通常会使用多视图的方法来描述系统的架构,多视图包括:数据视图、逻辑视图、开发视图、进程视图