架构

基于Spring Cloud微服务架构

前提是你 提交于 2020-01-22 23:05:58
1. 微服务简介 1.1 什么是微服务架构 微服务架构是系统架构上的一种设计风格 将大系统拆分成N个小型服务 这些小型服务都在各自的线程中运行 小服务间通过HTTP协议进行通信 有自己的数据存储、业务开发、自动化测试和独立部署机制 可以由不同语言编写 小结:微服务架构的思想,不只是停留在开发阶段,它贯穿了设计,研发,测试,发布,运维等各个软件生命周期。 2. 架构体系 架构样例: 2.1 微服务发布--持续集成 3. 微服务架构九大特性 服务组件化 -- 组件是可独立更换、升级的单元。就像PC中的内存,CPU一样。 按业务组织团队 -- 要求人员全栈技能 做“产品”的态度 -- 对整个产品生命周期负责,而不是做“项目”交付态度 智能端点与哑管道 -- 微服务间的通讯方式: --- HTTP的RESTful API --- MessageMQ消息队列 去中心化治理 --不是每一个问题都是钉子,不是每一个解决方案都是锤子。 去中心化数据管理 --独立维护各服务数据存储,尽量使服务间“无事物”调用,通过补偿机制维护数据一致性问题 基础设施自动化 -- 自动化测试 -- 自动化部署 容错设计 -- 每个服务实现监控和日志组件,比如服务状态,断路器状态,吞吐量,网络数据等关键数据仪表盘 演进式设计 --初期单体,逐步拆分,抽取公共组件 4. 微服务选型 Dubbo

云原生时代的微服务

[亡魂溺海] 提交于 2020-01-22 20:28:30
序言 4月24日,中国信息通信研究院主办的首届云原生产业大会在北京举行,在《云原生数字引领未来》的主题演讲中,阿里云容器服务总监易立表示:“云原生不但可以很好的支持互联网应用,也在深刻影响着新的计算架构、新的智能数据应用。以容器、服务网格、微服务、Serverless为代表的云原生技术,带来一种全新的方式来构建应用。”本段内容根据易立演讲内容整理而成。 一 云原生技术的优势 CNCF给出了云原生应用的三大特征: 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。 动态管理:通过集中式的编排调度系统来动态的管理和调度。 面向微服务:明确服务间的依赖,互相解耦。 云原生包含了一组应用的模式,用于帮助企业快速,持续,可靠,规模化地交付业务软件。云原生由微服务架构,DevOps 和以容器为代表的敏捷基础架构组成。 这边引用网上关于云原生所需要的能力和特征总结,如下图: 从云原生的三大特征和图中我们可以清晰的了解到:云原生技术中,微服务和云容器结合将会使项目的部署和运维变得更方便、简捷。 二 云原生与微服务的结合 传统的Web开发方式,一般被称为单体架构(Monolithic)所有的功能打包在一个WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat

阿里高级技术专家:整洁的应用架构“长”什么样?

点点圈 提交于 2020-01-22 14:12:40
简介: 作者张建飞是阿里巴巴高级技术专家,入司6年,他创建了COLA。希望可以探索一套切实可行的应用架构规范,这个规范不是高高在上的纸上谈兵,而是可以复制、可以理解、可以落地、可以控制复杂性的指导和约束。本文详述了他对COLA的升级迭代。 作者 | 张建飞 很多同学不止一次和我反馈,我们的系统很混乱,主要表现在: 应用的层次结构混乱:不知道应用应该如何分层、应该包含哪些组件、组件之间的关系是什么; 缺少规范的指导和约束:新加一段业务逻辑不知道放在什么地方(哪个类,哪个包)、应该起什么名字比较合适? 解决这些问题,正是我创建COLA( https://github.com/alibaba/COLA )的初心之一——试图探索一套切实可行的应用架构规范,这个规范不是高高在上的纸上谈兵,而是可以复制、可以理解、可以落地、可以控制复杂性的指导和约束。 自从COLA诞生以来,我收到了很多的意见和建议。同时,我自己在实践过程中,也发现COLA 1.0的诸多不足,有些设计是冗余的并不是很有必要,而有些关键要素并没有囊括。譬如,我最近在思考的应用架构核心和复杂业务代码治理就是对COLA 1.0的反思。 结合实践中的探索和对复杂度治理持续的思考,我决定对COLA进行一次全面的升级,于是有了现在的COLA 2.0。 从1.0到2.0,不仅仅是数字的简单变化,更是架构理念和设计理念的升级,其主要变动点包括

IOMMU

梦想的初衷 提交于 2020-01-22 05:22:14
https://blog.csdn.net/sdulibh/article/details/86611777 I/O作为CPU和外设交流的一个渠道,主要分为两种,一种是Port I/O,一种是MMIO(Memory mapping I/O)。 前者就是我们常说的I/O端口,它实际上的应该被称为I/O地址空间。 对于x86架构来说,通过IN/OUT指令访问。PC架构一共有65536个8bit的I/O端口,组成64KI/O地址空间,编号从0~0xFFFF。连续两个8bit的端口可以组成一个16bit的端口,连续4个组成一个32bit的端口。I/O地址空间和CPU的物理地址空间是两个不同的概念,例如I/O地址空间为64K,一个32bit的CPU物理地址空间是4G。 MMIO占用CPU的物理地址空间,对它的访问可以使用CPU访问内存的指令进行。一个形象的比喻是把文件用mmap()后,可以像访问内存一样访问文件、同样,MMIO是用访问内存一样的方式访问I/O资源,如设备上的内存。MMIO不能被cache,原因以前很多帖子论述过,就不多说了(有特殊情况,如VGA)。 Port I/O和MMIO的主要区别在于1)前者不占用CPU的物理地址空间,后者占有(这是对x86架构说的,一些架构,如IA64,port I/O占用物理地址空间)。2)前者是顺序访问。也就是说在一条I/O指令完成前

架构之CDN缓存

与世无争的帅哥 提交于 2020-01-22 03:44:33
CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂,跨运营商的网络访问会很慢。为了解决跨运营商或各地用户访问问题,可以在重要的城市,部署CDN应用。使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。 CND原理 CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。 (1) 未部署CDN应用前 网络请求路径: 请求:本机网络(局域网)——》运营商网络——》应用服务器机房 响应:应用服务器机房——》运营商网络——》本机网络(局域网) 在不考虑复杂网络的情况下,从请求到响应需要经过3个节点,6个步骤完成一次用户访问操作。 (2) 部署CDN应用后 网络路径: 请求:本机网络(局域网)——》运营商网络 响应:运营商网络——》本机网络(局域网) 在不考虑复杂网络的情况下,从请求到响应需要经过2个节点,2个步骤完成一次用户访问操作。 与不部署CDN服务相比,减少了1个节点,4个步骤的访问。极大的提高的系统的响应速度。 CDN优缺点 (1)优点(摘自百度百科) 1、本地Cache加速:提升访问速度,尤其含有大量图片和静态页面站点; 2、镜像服务

redis架构

早过忘川 提交于 2020-01-22 02:14:50
hash槽16384个,0-16383 master1(slave101,slave102) master2 (slave201,slave202) master 3 (slave301,slave302) 来源: https://www.cnblogs.com/SunshineKimi/p/12227672.html

k8s架构、基本概念

为君一笑 提交于 2020-01-22 01:53:35
k8s总架构: Master节点: (默认不参加工作) kubectl: k8s是命令端,用来发送客户端的操作指令 k8s的原生组件:(部署k8s比必不可少的组件) API server: 是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源,它提供了HTTP/HTTPS RESTful API,即k8s API Scheduler: 负责决定将Pod放在哪个Node上运行,在调度时,会充分考虑集群内的拓扑结构,当前各个节点的负载情况,以及对高可用、性能、数据和亲和性需求 Controller Manager: 负责管理集群的各种资源,保证资源处于预期的状态,它由多种Controller组成,包括Replication Controller、Endpoints Controller、Namespace Controller、Serviceaccounts Controller等等 Etcd: 负责保存k8s集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速的通知k8s相关组件。第三方组件,意味着它有可替换方案,比如:Consul、zookeeper Pod: k8s集群的最小组成单位,一个Pod内,可以运行一个或多个容器,大多数情况下,一个Pod内只有一个Container容器 Flannel: 是k8s集群网络解决方案

LAMP架构的搭建

风格不统一 提交于 2020-01-22 01:44:10
什么是LAMP架构? L : Linux,2.6.18-308.el5(redhat5.8) A :Apache,httpd 2.4.4 M : mysql-5.5.28 P : php-5.4.13 LAMP结构的l两种方式 1. 全部用rpm包进行安装 2. 全部用编译源码包的方式进行安装 因为全部rpm包进行安装,只需要配置yum源,然后用镜像文件进行安装即可,此处不再赘述,以下安装配置为第二种方式,全部用源码包,以下为安装的版本 linux2.6.18 + httpd2.4.4 + mysql-5.5.28 + php-5.4.13 下载好以上组件之后,配置步骤如下 一.Linux 1.首先配置yum源 # vim /etc/yum.repo.d/my.repo [huwentao] name = huwentao baseurl = file:///mnt/cdrom/Server enabled = 1 gpgcheck = 0 2.挂载光盘镜像 # mkdir /mnt/cdrom # mount /dev/cdrom /mnt/cdrom 3.安装必要的组 # yum grouplist 查看是否安装了一下两个组件没有安装的用以下两个命令进行安装 # yum -y groupinstall "Development Tools" # yum -y

微服务(概念篇):什么是微服务?一篇文章让你彻底搞明白

落爺英雄遲暮 提交于 2020-01-21 18:29:07
目录 前言 一、微服务介绍 1.什么是微服务 微服务由来 为什么需要微服务? 3.1 早期的单体架构带来的问题 3.2 微服务与单体架构区别 3.3 微服务与SOA区别 微服务本质 什么样的项目适合微服务 微服务折分与设计 6.1 微服务设计原则 微服务优势与缺点 7.1 特性 7.2 特点 7.3 缺点 微服务开发框架 Sprint cloud 和 Sprint boot区别 二、微服务实践先知 客户端如何访问这些服务?(API Gateway) 服务之间如何通信?(服务调用) 这么多服务怎么查找?(服务发现) 服务挂了怎么办? 微服务需要考虑的问题 三、微服务重要部件 微服务基本能力 服务注册中心 2.1 zookeeper服务注册和发现 负载均衡 3.1 负载均衡的常见策略 容错 4.1 容错策略 熔断 限流和降级 SLA API网关 多级缓存 超时和重试 线程池隔离 降级和限流 网关监控和统计 前言 到底什么是微服务?为什么要用微服务?微服务主要来做一些什么?微服务有哪些优势?什么样的服务属于微服务?本文所有资料来源网络,我只是整理一下,总结一下。仅供参考。 一、微服务介绍 1.什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释