架构

Terraform:最好从创建公司初期就开始用

孤者浪人 提交于 2020-02-24 10:17:33
Terraform 是国际著名的开源的资源编排工具,据不完全统计,全球已有超过一百家云厂商及服务提供商支持 Terraform。Terraform 是 HashiCorp 的代码软件基础设施。它允许用户使用高级配置语言定义数据中心基础架构,从中可以创建执行计划以构建 OpenStack 等基础架构,或者在 IBM Cloud,AWS,Microsoft Azure,Google Cloud Platform 等多种云服务中构建基础架构。 Terraform最大的好处在于它使基础架构的配置变得像代码一样可以进行版本控制与回滚操作。如果新的配置出错了,不用担心,可以用前一个能够正常运行的版本的配置重新把云资源设置一遍。一样的Terraform配置,一定会产生相同的云基础架构,只要之前那个版本可以运行,那么回滚之后的云基础架构也一定可以继续运行。 Terraform的另一个好处就是让跨云(Multi Cloud)变得更简单。试想一下,如果没有资源编排工具,我们就需要把每个云厂商上运行的现有设置记在脑子里,每一次服务的跨云迁徙都是一次新的尝试。而Terrafrom已经有一百多家云厂商的支持,对于一些比较普遍的资源,如计算和存储服务,可能跨云仅仅是把一些设置代码从一个文件复制到另一个文件,然后换一下底层调用的Provider引擎。 很多人可能认为只有在公司大了

消息队列面试大全

北慕城南 提交于 2020-02-24 05:05:22
文章目录 消息队列引入 你在项目种使用过消息队列么?公司使用什么消息架构 消息队列和异步调用的区别 那些业务场景使用了消息队列 消息队列的优点 消息中间件的缺点 Kafka概述 简述kafka架构下的重要关键字 为什么要选择kafka kafka和rabbitMQ区别 分布式构建三把斧:缓存+异步+数据分组 支付状态:未支付,支付成功,支付失败,待退款,已退款 快递状态:代发货,待收货,已收货,退货-商家待收货,退货-商家已收货 订单状态:订单打开,订单取消,订单关闭,订单完成 消息队列引入 Http请求适用于 耗费数百毫秒或更少时间 执行任务,当业务耗时达到一两秒种或更长时,需要。 例如 下单送积分,下单是最主要的,送积分可以异步去做 订单支付成功短信通知,返回支付订单进入下一环节更重要,短信通知可以异步执行 订单系统的日志收集功能 你在项目种使用过消息队列么?公司使用什么消息架构 ActiveMq: 分发效率最高,是其他队列的几十倍,缺点是不能做数据持久化 RabbitMQ:使用Erlang语言开发的开源消息队列,基于AMQP协议实现,支持消息的可靠传输,支持事务,不支持批量操作。 Kafka:最初由领英开发,以可水平扩展和高吞吐率被广泛使用,同等硬件Kafka性能超过传统的消息中间件,我们公司使用的消息队列中间件就是Kafka搭建的。 消息队列和异步调用的区别

Hadoop HA架构搭建

醉酒当歌 提交于 2020-02-23 19:04:06
Hadoop HA架构搭建 共七台服务器,节点角色分配如下: 192.168.133.21 (BFLN-01):namenode zookeeper journalnade DFSZKFailoverController 192.168.133.23 (BFLN-02):namenode resourcemanager zookeeper journalnade DFSZKFailoverController 192.168.133.24 (BFLN-03):resourcemanager zookeeper journalnade DFSZKFailoverController 192.168.133.25 (BFLN-04):datanode,nodemanager 192.168.133.26 (BFLN-05):datanode,nodemanager 192.168.133.27 (BFLN-06):datanode,nodemanager 192.168.133.28 (BFLN-07):datanode,nodemanager HA优势:双namedata和resourcemanager能防止hadoop核心组件单点故障导致集群不可用情况的发生。 配置步骤: 环境配置 1、集群间需实现时间同步: ntpdate 2、配置7台服务器的主机名解析/etc/hosts

对职业生涯的思考

非 Y 不嫁゛ 提交于 2020-02-23 13:51:56
对职业生涯的思考 从刚毕业到目前所在公司,差不多6年了,想想这六年里面,自己的能力和刚毕业比有了很大的提升,但是现在在什么能力上,我不知道,毕竟没有去过别的公司。最近也在思考自己未来,算是比较迷茫阶段。趁最近比较闲,顺便整理一下自己的职业路程 刚毕业阶段---工作一年半   刚毕业进入公司,公司的规模还算比较小的,那个时候觉得很开心,过的也比较充实,自己的任务就是写代码,读代码。在那个时候,自己的能力提升的非常快,毕竟在学校里面做的项目完全无法和公司的所在的项目类比。公司有一套自己的框架,在那个时候的我看来,写的非常不错。有很多比较好的编程规范:约定大于配置,强制树状依赖,多工程模型,但是也存在明显的问题,就是大量使用command 模式以及弱参数类型,导致接口上无法很直观定义入参和出参。那个时候第一次接触到正式项目流程,典型的瀑布式模型。这个阶段自己主要的精力就是学习公司的业务,阅读公司的框架的源代码,知道了很apache 开源项目,也是这个时候,能够熟练的使用一般的设计模式。那个时候公司的规模也比较小,经常也会写一下底层的工具类。架构也比较简单,没有所谓的分布式架构,基本上所有的业务逻辑在一个系统里面全部可以找到,排查问题也非常简单。 个人觉得,在这个阶段,是最适合学习的,尤其是自己的编码技能,也是在这个时候最容易提升的。刚毕业出来的时候,人还有一种拼搏的精神

轻量级微服务架构【读书笔记1】

二次信任 提交于 2020-02-23 11:49:48
1. 为什么要微服务架构(Why)  原因:传统的应用架构不合理,产生了新的架构模式。  1.1 传统应用架构的主要问题(Problems)   当一个系统中包含A、B、C三个业务模块,通过监控程序发现A和B累计消耗系统资源的20%,C却要占用80%时,系统运行一段时间后,C业务将会成为系统的瓶颈,从而降低系统的性能。   1.2 解决传统应用架构的问题(Solutions)   一般来看,只需要复制同样一份程序,并部署到另一台服务器上,只不过多台服务器上方通过负载均衡器将应用进行“水平扩展”。当请求资源时,先经过负载均衡器,通过路由算法(如轮询或哈希),将请求转发到后面的具体应用服务器上,这种方式也被成为反向代理。  1.3 其他问题(Others) 系统资源浪费(1.1中提到的) 部署效率太低(如果修改代码,需要部署整个应用) 技术选型单一(只能用一种语言) 2. 什么是微服务架构(What)  2.1 概念   应用满足一下要求,具体: 根据业务模块划分服务种类 每个服务可独立部署且项目隔离 通过轻量级 API 调用服务 服务需保证良好的高可用性  2.2 微服务交付流程   使用微服务架构开发应用,实际上是对一个个微服务进行设计、开发、测试、部署,每个服务之间没有彼此依赖。 3. 微服务有哪些特点和挑战  3.1 特点 微小度颗粒(根据业务功能来划分) 责任单一性

报表引擎 -架构描述

試著忘記壹切 提交于 2020-02-23 08:55:01
介绍 本文档是报表平台的技术架构描述,文中会描述主要的设计思路和设计决策。 架构目标和约束 报表平台作为独立的公共服务产品,可以简单的集成到各产品的报表应用 可维护性和可扩展性 扩展运算与分页独立实现,代码更易于维护 扩充表达式可以提高报表的运算能力 在此报表引擎上可以构建多维分析应用 可用性 能适用于上万条记录的报表数据量 适用于Web页面显示 易用性 针对技术人员,提供类似Excel编辑设计器 对多维分析提供专用设计器 其他情况下,需要再行开发设计器 实现约束 采用XXX实现 使用与XXX相同的表达式引擎和类似的表达式语法 采用XXX作为显示组件 架构表现 文档描述了系统的主要模型,包括: 用例模型 : 从系统外部角度表现重要的参与者和用例 分析模型 :以平台独立性提炼用例重要分析元素和用例的分析实现 设计模型 :从平台方面描述部署结构、设计元素结构等 用例模型从外部系统的角度描述了系统的行为。 用例模型 应用用例:描述用户如何与系统交互以实现预期的功能 用例 描述 基本要求 设计报表 报表设计人员通过这个用例设计一张报表 通过提供的报表设计器进行报表定义 浏览报表 使用者通过此用例查看报表数据 查看前有些报表需要输入参数 预览打印报表 使用者通过此用例以分页方式查看报表,并可以打印报表   填报 使用者通过此用例进行业务数据的输入 对于上报可能需要自动汇总功能 多维分析

架构笔记

非 Y 不嫁゛ 提交于 2020-02-23 03:10:27
高可用设计手段 无状态化–服务冗余 负载均衡–幂等设计 异步化设计–超时机制 服务限流降级熔断–数据复制/缓存 架构拆分、服务治理–sharding 高可用案例 网关层具备热切换能力 高并发设计手段 缩短响应时间 提高并发数(增加吞吐量) 让系统处于合理状态 高并发优化手段 空间换时间/时间换空间/找到系统瓶颈 调用了多少RPC接口? 载入多少数据? 使用什么算法? 非核心流程能否异步化? 没有数据依赖的逻辑能到否并行执行? 高并发优化层次 来源: CSDN 作者: 琅天溪 链接: https://blog.csdn.net/qq_28089993/article/details/104447627

狼群的架构暗示

拈花ヽ惹草 提交于 2020-02-22 19:59:15
接前文: 基因与架构 《狼图腾》的作者吕嘉民中说狼除了美人计外《孙子兵法》上的技法基本上都会用,不但会打战术战还会打战略战。我们不管狼与狼之间使用了多么复杂的沟通技术,来实现这些难以想象的群体活动,我们来关注一下沟通的信息传输过程。在这个模型中存在3个对象:狼、信息、环境。首先狼产生信息并能够消费信息; 其次狼所产出的信息可以游离于狼身体之外而存在并传输,既信息不是狼身体的一部分;最后是环境,它是信息的载体,狼的信息产生后不是直接进入对方的身体,而是先附加到大自然这个载体,然后传递给其他的狼,对方最后再从环境载体中拾取对自己“有用”的信息。 这使我想起软件设计的一条准则“高内聚、低耦合”。狼的个体是一个高度智能化、功能强劲、高度自治、独立存在的信息处理系统,这是高内聚的体现。狼与狼之间通过借助于“大自然”这个廉价、开放、通用、高可用的环境将谁都可以理解的且独立于狼身体之外的松散的“数据”进行交互,这种只和“大自然”耦合的方式是一种松耦合的典范。 狼为了自身的存活,不断强化自身的功能,并充分利用开放的环境资源 , 不断融入到环境中去,不断完善体外信息的沟通机制,来进一步提升狼群的整体生存能力。而这种进化行为在生物界举不胜举,这是否预示着“上天”这个架构师的第一架构法则是高内聚、低耦合呢?如果成立,那么软件的生存能力和生存空间就看高内聚、低耦合的水平了。 来源: https://www

05.MySQL的架构和历史--MySQL逻辑架构

自古美人都是妖i 提交于 2020-02-22 17:09:19
一.mysql的独特之处 mysql的不同之处在于能够在不同的场景中应用并发挥好作用,带来选择上的困难。但是足够灵活,能够适应高要求的的环境,例如web的类应用。通过配置可以适应不同的硬件,可以支持不同的数据类型。而最最重要、最与众不同的是他的存储引擎架构,这种架构的设计将 查询处理、系统任务、数据的存储/提取相分离,这样使用的时候可以根据性能,特性,以及其他需求来选择数据存储的方式。 二.逻辑架构图 三.连接管理和安全 服务器缓存连接的线程,并对客户端登陆用户进行验证,登陆成功后验证其用户权限(innoDB是例外可以解析外键定义,因为mysql服务器没有实现该功能) 四.优化与执行 Mysql会解析查询,并创建内部数据结构(解析树),然后对其进行优化,包括重写查询,决定表的读取顺序,以及选择合适的索引。用户可以通过特殊的关键字来提示优化器,影响它的决策过程。也可以请求优化器的解释优化过程的各个因素,是用户可以知道 服务器是如何进行优化决策的,并提供一个参考基准,便于用户重构查询和schema.优化器不关心是什么样的存储引擎,但是存储引擎对于优化查询是有影响的。优化器会请求存储引擎提供容量或者某个具体操作的开销信息,以及表数据的统计信息等。例如,某些存储引擎的某些特定的索引,可能对于一些特定的查询有优化。 对于select语句,在解析查询之前,服务器会先检查查询缓存