架构

微服务架构到底应该如何选择?

混江龙づ霸主 提交于 2020-02-15 22:35:23
原文: 微服务架构 微服务架构到底应该如何选择? 什么是微服务? 微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通讯。同时,服务会使用最小规模的集中管理 (例如 Docker)技术,服务可以用不同的编程语言与数据库等。 微服务是SOA架构下的最终产物,该架构的设计目标是为了肢解业务,使得服务能够独立运行。 主要有一下几个特点 服务拆分粒度更细 微服务可以说是更细维度的服务化,小到一个子模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为一个微服务。 服务独立部署 每个微服务都严格遵循独立打包部署的准则,互不影响。比如一台物理机上可以部署多个 Docker 实例,每个 Docker 实例可以部署一个微服务的代码。 服务独立维护 每个微服务都可以交由一个小团队甚至个人来开发、测试、发布和运维,并对整个生命周期负责。 服务治理能力要求高 因为拆分为微服务之后,服务的数量变多,因此需要有统一的服务治理平台,来对各个服务进行管理。 微服务架构下,服务调用主要依赖下面几个基本组件: 服务描述 注册中心 服务框架 服务监控 服务追踪 服务治理 开源RPC框架介绍 Dubbo

mysql架构和两种存储引擎

我与影子孤独终老i 提交于 2020-02-14 20:43:18
mysql一共分为四层,分别是连接层,业务层,引擎层,存储层。 1. mysql会对命令进行处理,查询缓存(在mysql的my . ini文件里开启), 2. 如果没有进入命令解析器, 3. mysql的sql语句解析顺序为 from , left join where , group by , select , order by , limit 4. 根据不同的命令分发到不同的位置上,如查询和增删改是不一样的。 查询优化器:组合索引顺序颠倒,查询优化器会自动调整,匹配联合索引顺序 5. 生成mysql自己执行的SQL语句 6. 查询 7. 返回 mysql有十余种存储引擎,我们常用的是innodb和myisam,二者的区别是: 5.5之前mysql默认存储引擎为myisam myisam : 偏向于读 1. 不支持主外键 2. 不支持事务 3. 表锁 4. 只缓存索引不缓存真真实数据 5. 表空间小 6. 关注点 == = 》性能 innodb:读写 1. 支持主外键 2. 支持事务 3. 行锁 4. 缓存索引和数据 5. 表空间大 6. 关注点 == = 》事务 来源: CSDN 作者: 氵何章怀晓 。 链接: https://blog.csdn.net/GiantCrocodile/article/details/104316528

架构演变历程&dubbo基本概念

爱⌒轻易说出口 提交于 2020-02-14 12:10:55
Dubbo 一、基础知识 1、分布式基础理论 1.1)、什么是分布式系统? 《分布式系统原理与范型》定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed system)是建立在网络之上的软件系统。 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需**一个治理系统**确保架构有条不紊的演进。 *单一应用架构* 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 缺点: 1、性能扩展比较难 ​ 2、协同开发问题 ​ 3、不利于升级维护 *垂直应用架构* 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。 通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。 缺点: 公用模块无法重复利用,开发性的浪费 1.3)、RPC *什么叫RPC* RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式

分布式架构的演进

左心房为你撑大大i 提交于 2020-02-13 19:15:59
分布式架构的演进 本质 ​ 去IOE运动 去IBM的存储设备和小型机 也即去除Oracle数据库 阿里巴巴B2B、淘宝和支付宝都是用大量EMC2的存储设备,也有少量DELL的存储设备,主要是EMC2的存储设备性价比高; 需要干预混乱的系统 无序到有序 分:把系统按照 子系统 , 模块 , 组件 拆分出来 划分边界 分与合 分 混乱系统打散 用户中心拆出来 抽离公共服务 合 分离的组件整合在一起 分类 业务架构,应用架构,技术架构 业务架构 业务流程 业务模块 输入输出 业务域 应用架构 数据交互关系、应用形式、交互方式 技术架构 平台选型、如操作系统、中间件、设备、多机房、水平扩展、高可用等问题 有时候中间件需要按照技术做改造 抽象思维很重要 系统边界 代码重构,工具类 演进过程 任何创业公司问题 用更少的人解决更多的问题 招合伙人 期权 快速迭代 简单架构发展 访问量越高 技术能力要求越高 双十一 电商 用户(用户注册、用户管理) 商品(商品展示、商品管理) 交易(下单、支付)这些功能 最开始的架构 .war 放在tomcat+db ​ 这个地方要注意的是,各个功能模块之间是通过 JVM 内部的方法调用来进行交互的,而应用和数据库之间是通过 JDBC 进行访问。 优化 ​ db单独服务器 计算机性能提升 CPU 达到峰值,增加资源效果不高 上下文切换 文件 IO 日志写入

集中式架构vs分布式架构

烈酒焚心 提交于 2020-02-12 23:07:00
历史 自从20世纪60年代大型主机被发明出来以后,凭借其超强的计算和I/O处理能力以及在稳定性和安全性方面的卓越表现,在很长一段时间内,大型主机引领了计算机行业以及商业计算领域的发展。由于大型主机卓越的性能和良好的稳定性,其在单机处理能力方面的优势非常明显,使得IT系统快速进入了集中式处理阶段,其对应的计算机系统称为集中式系统。 但从20世纪80年代以来,随着微型计算机的出现,越来越多廉价的PC机成为了各大IT企业架构的首选,分布式的处理方式越来越受到业界的青睐,计算机系统正在经历一场前所未有的从集中式到分布式架构的变革。 主要有以下几点原因: 大型主机的人才培养成本非常高,通常一台大型主机汇集了大量精密的计算机组件,操作非常复杂,这对一个运维人员掌握其技术细节提出了非常高的要求。 大型主机也是非常昂贵的,通常一台配置较好的IBM大型主机,其售价达到上百万美元甚至更高,因此也只有像政府、金融和电信等企业才有能力采购大型主机。 集中式有非常明显的单点问题,大型主机虽然在性能和稳定性方面表现卓越,但并不代表其永远不会出故障。一旦一台大型主机出现了故障,那么整个系统将处于不可用的状态,后果相当严重。 随着业务的不断发展,用户访问量迅速提高, 计算机系统的规模也在不断扩大,在单一大型主机上进行扩容往往比较困难。 随着PC机性能的不断提升和网络技术的快速普及,大型主机的市场份额变得越来越小

三分钟彻底弄懂什么是分布式和微服务架构

我的未来我决定 提交于 2020-02-12 20:47:50
一、微服务简介 1. 微服务的诞生 微服务是基于分而治之的思想演化出来的。过去传统的一个大型而又全面的系统,随着互联网的发展已经很难满足市场对技术的需求,于是我们从单独架构发展到分布式架构,又从分布式架构发展到 SOA 架构,服务不断的被拆分和分解,粒度也越来越小,直到微服务架构的诞生。 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 2. 微服务架构与SOA架构的区别 微服务是真正的分布式的、去中心化的。把所有的“思考”逻辑包括路由、消息解析等放在服务内部,去掉一个大一统的 ESB,服务间轻通信,是比 SOA 更彻底的拆分。 微服务架构强调的重点是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用,这些小应用之间通过服务完成交互和集成。 3. 微服务架构引发的问题 随着整个业务数据被分散在各个子服务之后,也带来了两个最明显的问题。

Windows系统资源监控

血红的双手。 提交于 2020-02-12 11:26:02
1、windows自带系统资源监控工具 2、Windows监控的数据来源:Performance Counters 2.1 Performance Counter架构 2.2 Performance Counter数据结构 2.3 消费Performance Counter数据 3、使用基于PDH的python客户端 1、Windows自带系统资源监控工具 我们都知道,Windows自带有系统资源监视器。主要有3个地方: 1) Windows的任务管理器的性能页签,包括了CPU,内存,磁盘,网络等系统资源的监控。它主要监控系统资源的总体使用情况,使用它,我们可以发现是否有资源达到瓶颈了等等。 2) Windows资源监视器 这个工具可以看出系统资源到底是由哪些进程消耗的。通过它,可以快速查看到到底哪些进程占用了你的系统资源。 3) 性能监视器 前两种工具已经提供你要监控的大部分功能,在某些情况下,可能仍然不能定位问题,这时候就需要你更进一步的了解系统的运行状况。那么这个工具就是一个不错的选择。 2、Windows 监控的数据来源:Performance Counters Windows的这些监控工具之所以能够展示这些资源的情况,它们的数据来源都是一个叫Performance Counter的东东。 https://docs.microsoft.com/zh-cn/windows

ActiveMQ集群架构与原理解析

喜欢而已 提交于 2020-02-11 13:28:38
初识 JMS 与其专业术语 首先,说起ActiveMQ,就必须先聊聊JMS(Java Message Service)规范,也就是Java消息服务,它定义了Java中访问消息中间件的接口的规范。在这里注意哦,JMS只是接口,并没有给予实现,实现JMS接口的消息中间件称为 “JMS Provider”,目前知名的开源 MOM (Message Oriented Middleware,也就是消息中间件)系统包括Apache的ActiveMQ、RocketMQ、Kafka,以及RabbitMQ,可以说他们都 “基本遵循” 或 “参考” JMS规范,都有自己的特点和优势。 专业术语 JMS(Java Message Service):实现JMS 接口的消息中间件; Provider(MessageProvider):消息的生产者; Consumer(MessageConsumer):消息的消费者; PTP(Point to Point):即点对点的消息模型,这也是非常经典的模型; Pub / Sub(Publish/Subscribe):,即发布/订阅的消息模型; Queue:队列目标,也就是我们常说的消息队列,一般都是会真正的进行物理存储; Topic:主题目标; ConnectionFactory:连接工厂,JMS 用它创建连接; Connection:JMS 客户端到JMS