微服务架构优势

复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。容错:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上...
代码星球 代码星球·2021-02-11

Spring Cloud 架构

我们从整体来看一下SpringCloud主要的组件,以及它的访问流程1、外部或者内部的非SpringCloud项目都统一通过API网关(Zuul)来访问内部服务.2、网关接收到请求后,从注册中心(Eureka)获取可用服务3、由Ribbon进行均衡负载后,分发到后端的具体实例4、微服务之间通过Feign进行通信处理业务5、Hystrix负责处理服务超时熔断6、Turbine监控服务间的调用和熔断相关指标图中没有画出配置中心,配置中心管理各微服务不同环境下的配置文件。以上就是一个完整的SpringCloud生态图。...
代码星球 代码星球·2021-02-11

SpringCloud架构设计

最近一直在针对SpringCloud框架做项目,从中踩了不少的坑,也渐渐梳理出了一些内容,由于SpringCloud作为一个全家桶,其中东西太多,所以这时候就要有所取舍,这里就想把自己比较常用组件及架构推荐上来。本文基于SpringBoot1.5.7和SpirngCloud Dalston.SR5。 针对这个架构图我分层介绍一下:1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们nginx有些地方做了keep-alive模式处理,减少了三次握手的次数,提高了连接效率。keepalived做nginx的负载,虚拟一个vip对外,两个nginx做高可用,nginx本身反向代理zuul集群。2、apigateway,这里的zuul很多人诟病,说是速度慢推荐直接用nginx,这里我还是推荐使用zuul的,毕竟zuul含有拦截器和反向代理,在权限管理、单点登录、用户认证时候还是很有用的,而且zuul自带ribbon负载均衡,如果你直接用nginx,还需要单独做一...
代码星球 代码星球·2021-02-11

框架架构讲解:

框架架构讲解:mybatis结构(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。...
代码星球 代码星球·2021-02-11

我们把Mybatis的功能架构分为三层:

我们把Mybatis的功能架构分为三层:(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。...

NFV MANO 架构

   NFVMANO管理前面描述的VNF和NFVI的系统,这包括:•NFVI中支持虚拟化的硬件和软件•VNF的编排和声明周期管理    •VNF:前面已经描述过了,这里就不再叙述。•EM(ElementManagement):对一个多着多个VNF进行管理。注意NFVI只是提供VNF的运行环境,对VNF的管理还需要EM参与。•VNFManager(s):作为NFVMANO的一部分,负责VNF的生命周期管理。VNFManager可以存在多个。•NFVI:前面已经描述过。•VIM(VirtualizedInfrastructureManager):作为NFVMANO的一部分,管理支持虚拟化的硬件软件资源。包括权限管理,增加/回收VNF的资源,分析NFVI的故障,收集NFVI的信息等。VIM可以存在多个。•NFVOrchestrator:作为NFVMANO的一部分,管理和编排NFVI和软件资源,在NFVI上实现NetworkService。•OSS/BSS(OperationSupportSystemsandBusiness...
代码星球 代码星球·2021-02-11

pycharm 配置 anaconda ,以及anaconda的使用

在学习推荐系统、机器学习、数据挖掘时,python是非常强大的工具,也有很多很强大的模块,但是模块的安装却是一件令人头疼的事情。现在有个工具——anaconda,他已经帮我们集成好了很多工具了!anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而python是一个编译器,如果不使用anaconda,那么安装起来会比较痛苦,各个库之间的依赖性就很难连接的很好。在windows中,pycharm是一个比较好python编辑器,所以如果能把pycharm和anaconda结合起来,岂不是美哉!1.下载安装anaconda 点击这里下载anaconda,注意对应自己想要安装的python版本就行了。这里还要注意一个问题:因为anaconda是自带Python的,所以不需要自己再去下载安装Python了,当然,如果你已经安装了Python也不要紧,不会发生冲突的!2.下载安装pycharm 建议使用这个编辑器吧,个人感觉还是很好用的。如果你是已经安装了pycharm了,那么可以直接跳到下一步。点击这里下载pycharm 它会自动找到你...

openstack 架构

我们会把学习的重点放在OpenStack最核心的地方。那什么是核心呢?请看下图作为IaaS层的云操作系统,OpenStack为虚拟机提供并管理三大类资源:计算、网络和存储。这三个就是核心,所以我们的学习重点就是:搞清楚OpenStack是如何对计算、网络和存储资源进行管理的。在20+模块中,管理这三类资源的核心模块其实不多,这几个模块就是我们的重点了。要达到这个目的,我们自然需要研究OpenStack的整体架构。架构里哪些核心模块负责管理计算资源、网络资源和存储资源?模块之间如何协调工作?同时我们会构建一个实验环境,进到各个模块的内部,通过实际操作真正理解和掌握OpenStack。好,下面我们就从架构开始吧。OpenStack架构架构是个好东西,它能帮助我们站在高处看清楚事物的整体结构,避免过早地进入细节而迷失方向。下图是OpenStack的ConceptualArchitecture中间菱形是虚拟机,围绕VM的那些长方形代表OpenStack不同的模块(OpenStack叫服务,后面都用服务这个术语),下面来分别介绍。Nova:管理VM的生命周期,是OpenStack中最核心的服务。...
代码星球 代码星球·2021-02-11

pycharm python @符号不能识别 NameError: name 'app' is not defined

pycharmpython@符号不能识别NameError:name'app'isnotdefined解决办法:缺少:app=Flask(__name__)#导入Flask类fromflaskimportFlask#实例化,可视为固定格式app=Flask(__name__)#route()方法用于设定路由;类似spring路由配置@app.route('/quark/callback/<int:sid>')defhello_world(sid):return'Hello,World!'if__name__=='__main__':#app.run(host,port,debug,options)#默认值:host=127.0.0.1,port=5000,debug=falseapp.run(host='0.0.0.0',port=38002,debug=True)  ...

一线架构师知识图谱

一:常见模式与工具二:分布式架构三:微服务架构四:底层知识五:性能优化六:工程化与工具七:项目实战 ...
代码星球 代码星球·2021-02-11

亿级流量电商详情页系统的大型高并发与高可用缓存架构

1、亿级流量电商网站的商品详情页系统架构面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问,同时能够秒级让最新模板生效的商品详情页系统的架构是如何设计的?解决方案:异步多级缓存架构+nginx本地化缓存+动态模板渲染的架构2、redis企业级集群架构面临难题:如何让redis集群支撑几十万QPS高并发+99.99%高可用+TB级海量数据+企业级数据备份与恢复?解决方案:redis的企业级备份恢复方案+复制架构+读写分离+哨兵架构+rediscluster集群部署3、多级缓存架构设计面临难题:如何将缓存架构设计的能够支撑高性能以及高并发到极致?同时还要给缓存架构最后的一个安全保护层?解决方案:nginx抗热点数据+redis抗大规模离线请求+ehcache抗redis崩溃的三级缓存架构4、数据库+缓存双写一致性解决方案面临难题:高并发场景下,如何解决数据库与缓存双写的时候数据不一致的情况?解决方案:异步队列串行化的数据库+缓存双写一致性解决方案5、缓存维度化拆分解决方案面临难题:如何解决大value缓存的全量更新效率低下问题?解决方案:商品缓存数据的维度化拆分...

亿级用户下的新浪微博平台架构

一、序新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化、服务化和组件化,后台系统从php替换为Java,逐渐形成SOA架构,在很长一段时间支撑了微博平台的业务发展。在此基础上又经过长时间的重构、线上运行、思索与沉淀,平台形成了第三代架构体系。我们先看一张微博的核心业务图(如下),是不是非常复杂?但这已经是一个简化的不能再简化的业务图了,第三代技术体系就是为了保障在微博核心业务上快速、高效、可靠地发布新产品新功能。二、第三代技术架构微博平台的第三代技术体系,使用正交分解法建立模型:在水平方向,采用典型的三级分层模型,即接口层、服务层与资源层;在垂直方向,进一步细分为业务架构、技术架构、监控平台与服务治理平台。下面是平台的整体架构图:如上图所示,正交分解法将整个图分解为3*...

微信、陌陌等著名IM软件设计架构详解

原文链接:http://www.wtoutiao.com/p/Y27a5z.html对微信、陌陌等进行了分析,发出来分享一下(时间有些久了)电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。网络:这个也是IM最核心的内容了,我们要做到在任何网络下等顺畅聊天那就不容易了,好多公司都用的xmpp框架,如果在强网络环境下,xmpp完全没有问题。但是那种弱网络环境下xmpp就束手无策啦,用户体验就很垃圾了。个人觉得xmpp可以玩玩(参考看这个 RFC3920和RFC3921   ),但是用来真正的产品就差远了。如果遇到一个做IM的朋友张口闭口都说xmpp的话,那么不用沟通了,肯定不是什么好产品。微信、QQ以前也曾用过xmpp,但是最后也放弃了xmpp,就知道xmpp有很多弊端了,还有就是报文太大,好臃肿,浪费流量。为了保证...

Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建

Keepalived+Nginx+Tomcat的高可用负载均衡架构搭建Nginx是一个高性能的HTTP反向代理服务器Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免服务的单点故障Tomcat是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。所需下载:jdk-8u151-linux-x64.rpmapache-tomcat-7.0.52.tar.gzhttp://nginx.org/download/nginx-1.12.2.tar.gzhttp://www.keepalived.org/software/keepalived-1.3.2.tar.gz服务器准备和规划:IP地址部署服务主从关系192.168.153.128Nginx+keepalivedMaser192.168.153.129Nginx+keepalivedSlave192.168.153.130Java1.8+tomcat7[8080+tomcat8090]-Nginx的高可用负载均衡架构(1)用户通过域名请求到DNS,由DNS解析域名后返回对应的IP地址,该IP及...

架构实例之Demo_JSP

架构实例之Demo_JSP1、开发工具和开发环境    开发工具:MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13    开发环境:WIN102、Demo_JSP实现功能   用户登录、用户注册、退出登录。3、Demo_JSP使用技术   本实例使用了JSP、JDBC来实现用户登录、用户注册和退出登录功能。系统架构图如图一所示:图一:Demo_JSP系统架构图    下面请看图二(Demo_JSP中JSP文件间逻辑关系图):图二:Demo_JSP中JSP文件间逻辑关系图 4、具体实现(1)在MyEclipse中新建一个Webproject项目,并命名为Demo_JSP;(2)向Demo_JSP项目中导入mysql-connector-java-5.1.6-bin.jar,这个包是实现Java连接数据库功能的包(不会导入包的同学,可以百度哟...
代码星球 代码星球·2021-02-09
首页上一页...89101112...下一页尾页