聚合文章列表
13 浏览

微服务系列(七):服务化管理和治理框架的技术选型

SOA服务化和微服务架构已经发展多年,市场上已经有很多成熟的商业和开源产品,我们没有必要从头搭建一套服务化管理和治理平台,完全可以基于开源服务化框架进行定制化,以适应我们的业务需要。本节介绍各种流行的RPC框架、服务化管理和治理、微服务框架,并通过讲解其特点来帮助我们做技术选型。1RPC本节介绍简单的远程服务调用的技术栈。1.JDKRMI自JDK1.4开始,JDK内置了远程服务调用的技术栈,可以帮助开发者创建基于Java到Java的分布式调用架构,一个Java进程内的服务可以调用其他Java进程内的服务,使用JDK内置的序列化和反序列化协议。RMI是JEE规范中EJB远程调用的基础,然而,JDK内置的RMI服务并没有得到广泛应用,几乎没有哪家公司采用这种方式来构建服务化平台。原因如下。lRMI采用JDK自带的专用序列化协议,不能跨语言。l使用了底层的网络协议,不如基于文本的HTTP可读,也不如HTTP被广泛认可和应用。

软件架构 2017-11-20 发布
14 浏览

Android Architecture之添加组件

对于Lifecycles,添加:implementation"android.arch.lifecycle:runtime:1.0.3"//不是必须的,如果你使用了lifecycle:extensions或者lifecycle:common-java8annotationProcessor"android.arch.lifecycle:compiler:1.0.0"//如果你从common-java8中使用了DefaultLifecycleObserver就不需要添加对于Lifecyclesjava8语言的支持,添加:implementation"android.arch.lifecycle:common-java8:1.0.0"对于LiveData,和ViewModel,添加:implementation"android.arch.lifecycle:extensions:1.0.0"为了在测试中控制LiveData后台线程,需要添加:testImplementation"android.arch.core:cor

软件架构 2017-11-20 发布
24 浏览

Android Architecture指南

原文地址:https://developer.android.com/topic/libraries/architecture/guide.html#addendum现在按照google官方发布的androidarchitecture来一步步的深入使用。想象一下,我们构建一个用来显示用户信息的程序,用户信息是使用RESTAPI从我们自己私人的服务器上获取的。构建用户界面程序中包含一个UserProfileFragment.java和他的布局文件user_profile_layout.xml.为了用户界面的显示,我们的数据model需要有两个数据字段。UserID用户的标识,最好使用传递参数的方式将这些参数传递给fragment,如果Android操作系统销毁您的进程,这些信息将被保留,以便在您的应用下次重新启动时使用。Userobject保存用户数据的实体类我们将会创建一个继承自ViewModel的UserProfileViewModel来保存这些信息。V

软件架构 2017-11-20 发布
AD 友情赞助
20 浏览

Spring Cloud构建微服务架构—Hystrix断路器

断路器模式源于MartinFowler的CircuitBreaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果。在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),直接切断原来的主逻辑调用。但是,在Hystrix中的断路器除了切断主逻辑的功能之外,还有更复杂的逻辑,下面我们来看看它更为深层次的处理逻辑。我们来说说断路器的工作原理,当我们把服务提供者eureka-client中加入了模拟的时间延迟之后,在服务消费端的服务降级逻辑因为hystrix命令调用依赖服务超时,触发了降级逻辑,但是即使这样,受限于Hystrix超时时间的问题,我们的调用依然很有可能产生堆积。这个时候断路器就会发挥作用,那么断路器是在什么情况下开始起作用呢?这里涉及到断路器的三个重要参数:快照时间窗、请求总数下限、错误百分比下限。这个参数的作用分别是:快照时间窗

软件架构 2017-11-20 发布
13 浏览

Android Architecture之处理生命周期

原文地址:https://developer.android.com/topic/libraries/architecture/lifecycle.html使用Lifecycle-Aware库来解决生命周期问题。生命周期感知组件会对于另一个组件(如Activity和Fragment)的生命周期状态更改而执行相应的响应操作。这些组件可以帮助您生成组织性更好,且更加轻量的代码,更易于维护。一个常见的模式是在活动和片段的生命周期方法中实现依赖组件的动作。但是,这种模式导致代码的组织不良以及错误的扩散。通过使用生命周期感知组件,您可以将依赖组件的代码从生命周期方法移出并移入组件本身。android.arch.lifecycle包提供了让你构建生命周期感知组件所使用的类和接口,这些组件可以根据活动或片段的当前生命周期状态自动调整其行为。AndroidFramework中定义的大多数应用程序组件都附带有生命周期。生命周期由操作系统或您的流程中运行的框架代码管理。它们是Android以及应用程序工作的核心。不这样做可能会触发内

软件架构 2017-11-20 发布
11 浏览

微服务之分布式配置中心Cloud Config

分布式系统中,服务数量剧增,其配置文件需要实现统一管理并且能够实时更新,分布式配置中心组件必然是需要的。SpringCloud提供了配置中心组件SpringCloudConfig,它支持配置服务放在远程Git仓库和本地文件中。默认采用git来存储配置信息,笔者示例也是采用默认的gitrepository,这样通过git客户端工具来方便的管理和访问配置内容。配置服务器工作示意图在SpringCloudConfig组件中,有两个角色,一是ConfigServer配置服务器,为其他服务提供配置文件信息;另一个是ConfigClient即其他服务,启动时从ConfigServer拉取配置。下面分别介绍下ConfigServer和ConfigClient的搭建实现方法。2.配置服务器ConfigServer2.1pom中的jars只需要添加如下两个jar包的引用。org.springframework.cloud

软件架构 2017-11-20 发布
AD 友情赞助
15 浏览

视频访谈: 周恒:付钱拉交易系统架构演进与思考

2.首先请您介绍一下自己,在付钱拉负责哪些工作?周恒:我是2015年加入付钱拉的,我是担任高级架构师职务,这个职务是比较虚的,但是我的主要的工作职责是负责开发和维护我们现在这套支付框架,另外基于这套框架进行一个前瞻性的工作,工作内容就是我会去定期的去收集一些我们业务人员同时的一些需求,包括他们一些工作中遇到的难点,包括使用框架中遇到的问题,包括汇总,去尝试性的去进行一些预演我们新的框架,保证我们当前这个运行生产的框架,一个个的稳定,另外还会去针对他们一些工作中的难点,然后去研发一些维护性的系统和工具,比如说日志的归集,搜索,还有一些报警的买点,另外还有短信服务,也是我这边的。除此之外呢,我还负责一个专门的业务团队,和这个业务团队主要负责去收集就是用户的一些征信信息提供给一些厂商。3.付钱拉目前主要包含哪些业务,目前发展的情况如何?周恒:付钱拉是以聚合支付起搏的,我想这个大家都会知道,但是经过我们2.0品牌升级以后,慢慢的我们付钱拉,不仅去提供了一个聚合支付,更多的还提供了比如资金管理,还有这种现金楼盘,就是企业

软件架构 2017-11-21 发布
12 浏览

码云推荐 | 基于 SOA 架构的分布式商城 xmall

文件说明dependency文件夹提供部分依赖与sql文件xmall.sql:数据库文件dubbo.xsd:需手动配置避免报错redis-3.0.0.gem:Redis集群搭建所需Ruby库generatorSqlmapCustom文件夹为MybatisGenerator逆向生成工具,且已配置好maven插件本地开发运行部署下载zip直接解压或安装git后执行克隆命令gitclonehttps://github.com/Exrick/xmall.git依赖安装:ZooKeeper、Redis、ActiveMQ、Elasticsearch修改各依赖相应IP配置(默认本地127.0.0.1),以及七牛云、极验配置在xmall-common-utils中找到修改,同步索引在xmall-manager-web\src\main\webapp\WEB-INF\jsp\refresh-index.jsp两处ajax中修改Elsticsearch对应IPMaven安装和在IDEA中配置使用IDEA(破解/免费注册)File

软件架构 2017-11-21 发布
27 浏览

使用dropwizard(5)--加入swagger

前言Swagger已经成APIservice的规范了,本处在dropwizard中简单集成Swagger.Demosourcehttps://github.com/Ryan-Miao/l4dropwizard本文是基于dropwizard入门之上的演进。确保依赖都是最新的,或者自行解决版本冲突,比如jackson不同版本之间的类有所不同。添加swagger依赖com.smoketurnerdropwizard-swagger1.1.2-1在configuration中新增swagger的基础配置@JsonProperty("swagger")privateSwaggerBundleConfigurationswaggerBundleConfiguration;在配置文件中,新增swagger:resourcePackage:com.test.

软件架构 2017-11-21 发布
AD 友情赞助
21 浏览

深入研究一种适合 SAS Foundation 混合工作负载的新的软件定义融合基础架构

要了解这个新的软件定义融合基础架构,可以参阅标题为“一种适合SASFoundation混合工作负载的新的软件定义融合基础架构”的技术简报。该技术简报描述了一种为SAS上用于内部测试的SASMixedAnalytics工作负载提供出色性能的架构和方法。该融合基础架构的关键元素包括IBM®ElasticStorageServer(ESS)、IBMPower®服务器和来自Mellanox的基于以太网的存储结构。本文将介绍测试的用途、目标和结果,包括测试背后的技术细节、测试环境的规格,以及测试方案细节和来自这些测试的性能数据。最后,还会提供调优融合基础架构的指南,以帮助获得最佳性能。系统架构、配置、调优和文件系统创建图1演示了在实验室环境中使用IBMElasticStorageServer和IBMPowerE880服务器测试SAS软件所用的架构和配置。图2展示了ESS网络配置。图1.针对IBMPower服务器和IBMElasticStorageServe

软件架构 2017-11-21 发布
25 浏览

浅谈微服务基建的逻辑

这篇文章主要目的是面向初接触微服务的朋友简单介绍微服务基础建设所需要的各个模块以及缘由。起点首先,我们得有一个“服务”。根据定义,我们可以把每个服务实例都视作一个黑盒。这个盒子有着明确的输入点和输出点,并且(理想情况下)仅通过这些输入和输出点和外界产生关联。每个服务实例会拥有专属的网络地址、独立的计算资源,并且独立部署。客户端通过访问服务实例的地址来调用服务API。不同服务也可以相互调用。配置管理器:统一管理配置在微服务体系中,每个服务都独立部署和运行,团队可以根据需要自行选择增加和减少计算资源。一个服务可能会跑多个实例,每个服务实例都会需要做配置。为了方便统一调整配置,我们可以把配置中心化,每个服务实例都去找配置管理器(ConfigurationManager)拿配置。当配置更新的时候,我们也可以让服务实例再去拿新的配置。服务名册:解耦主机地址这也引出了一个问题:网络地址(比如IP)很容易因为扩容、维护而变动,调用者难以实时获知可用的地址。鉴于此,我们可以把网络地址抽象成不容易变动的概念,比如给每个服务一个固定的名

软件架构 2017-11-21 发布
18 浏览

给迷茫的JAVA员一些中肯建议,不然你就废了,快速成为架构师

最近好多人私信问我,该怎样才能成为高薪架构师,还有一个就对当前的状态感到迷茫。我在此做一个简单的说明,或者对迷茫中的你来说有些许帮助。当前你感到迷茫吗?有很多人对现在的工作感到很没意思,因为当前的工作,完全是实现业务,技术上没有任何提高。在这种状态下就会感到迷茫,特别是一想到将来这种迷茫感就更强烈了。与其说迷茫还不如说是担忧,随着时间的推移,自己的技术又没有长进,所以感觉忧心忡忡。这里分为二种人:*混日子,过一天算一天这一种的我就不过多讨论了,没有意义。我也碰到过很多这样的同事,此类程序员已经废啦。*想提高自己的技术,往架构师方向努力。给我发私信的人,大部分是这一种。首先,可以看出来,这些人都是有自己理想的人,也会付诸实践的。想往架构师方向走,但是却苦于没有人带,自己也不知道如何成为框架师。再不改变,此类程序员可能会也废。我想借这个文章和大家聊聊架构师这个话题,纯属个人理解,与对错无忧。架构师的定义?个人觉得架构师需要具有以下几特点:知识广度:需要知道主流技术为什么诞生,能解决什么问题?如果同一种业务用

软件架构 2017-11-21 发布
AD 友情赞助
19 浏览

如何设计实现真正的响应式微服务系统?

这是一篇讲解微服务系统在扩展性伸缩性方面的演进文章,JonasBoner认为目前普通的微服务最终将演进为事件驱动的响应式微系统架构(ReactiveMicrosystem),英文PPT文档见:这里(https://pan.baidu.com/s/1gflc0MZ)。今天系统架构大概有三种:单体Monolith、微单体Micoliths和微服务Microsystems,所谓微单体就是介于单体和微服务之间的一种,有很多服务,数据库也进行了分库分表,不像单体那样只有一个大的WAR应用和一个数据库,但是又不像微服务那样,每个服务都有自己独立的数据库,互不干涉。大部分微单体系统是切分了单体系统而形成的,每个Microlith由一个台服务器运行,有自己的REST/Servlet,有自己的服务和JPA数据库,数据库访问是一种同步堵塞式的数据库线程连接池方式访问,微单之间式通过同步的堵塞的RPC访问(比如Dubbo和gRPC),这样的系统没有弹性,不具有伸缩。CarlHewitt说:一个Actor模型不是真正的Actor,一个系统中应

软件架构 2017-11-21 发布
18 浏览

微服务场景下性能问题排查神器之xrebel

对于java应用性能跟踪其实有很多种手段,本文只是针对xrebel的使用做一些简单讲解(单体应用和微服务应用)。分布式跟踪有很多,比如zipkin等,详见分布式跟踪系统(一):Zipkin的背景和设计,但是太重了,不适合小规模团队,开发时期用。而且以zipkin为例,仅仅是A服务调用B服务耗时多少,并不会显示详细的线程,堆栈信息。需要搭配其他手段进行排查。示例:下载xrebel目前最新版本xrebel-3.4.1.zip快速安装xrebel支持eclipse和idea,同时有eclipse插件,建议使用独立方式安装。下载xrebel.zip并解压到本地,e.g.D:\xrebel在tomcat也好,idea,eclipse也好,修改vm参数,添加-javaagent:[path/to/xrebel]/xrebel.jar下面分别是idea,eclipse默认是可以试用14天的,建议支持正版,毕竟大家都是吃这行饭的。而且xrebeljrebeljrebelforandroid给你省的时间,绝

软件架构 2017-11-21 发布
21 浏览

实现基于Keepalived主从高可用集群网站架构

背景上一期我们实现了基于lvs负载均衡集群的电商网站架构,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已经通过集群技术保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?技术说明集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。集群在目前互联网公司是

软件架构 2017-11-21 发布
14 浏览

传统路由,SD-WAN给你提个醒

SD-WAN的优势很明显,能够实现带宽的经济应用、应用程序优先级和集中管理等优势,正在迅速重塑分支网络体系架构。由于诸多分支机构可以使用丰富的互联网带宽、优先访问关键应用程序以及轻松实现集中管理,SD-WAN正在成为主流。领先的IT组织正在部署SD-WAN解决方案和基于软件的路由,并雀带传统的分支机构路由器体系架构,随着时间的推移,DoyleResearch预测,SD-WAN将会成为主要的平台对分支路由市场造成重大的冲击。新的流量模式和云应用的兴起基于SaaS的应用程序、混合云部署和无处不在的移动性的流量推动了WAN流量模式的转变,除了广域网带宽需求的不断增加(年涨幅20%)之外,流量限制正在从分支机构直接流向基于云的应用。这在一定程度上降低了对连接分支机构和集中数据中心的传统MPLS的依赖,将从分支机构返回到总部,然后到互联网访问SaaS或Web应用程序的互联网绑定流量,在将分散的员工连接到云端导致效率非常低下。SD-WAN的兴起SD-WAN解决方案使企业能够引入经济型宽带来增强MPLS,根据应用需求引导业务并集中管理。具有分

软件架构 2017-11-22 发布
15 浏览

资深架构师解读Java多线程与并发模型之共享对象

【51CTO.com原创稿件】互联网上充斥着对Java多线程编程的介绍,每篇文章都从不同的角度介绍并总结了该领域的内容。但大部分文章都没有说明多线程的实现本质,没能让开发者真正“过瘾”。上篇内容从Java的线程安全鼻祖内置锁介绍开始,让你了解内置锁的实现逻辑和原理以及引发的性能问题,本篇接着说明Java多线程编程中锁的存在是为了保障共享变量的线程安全使用。下面让我们进入正题。以下内容如无特殊说明均指代Java环境。第二部分:共享对象使用Java编写线程安全的程序关键在于正确的使用共享对象,以及安全的对其进行访问管理。在第一章我们谈到Java的内置锁可以保障线程安全,对于其他的应用来说并发的安全性是在内置锁这个“黑盒子”内保障了线程变量使用的边界。谈到线程的边界问题,随之而来的是Java内存模型另外的一个重要的含义,可见性。Java对可见性提供的原生支持是volatile关键字。volatile关键字volatile关键字是Java语言提供的原生实现,可以理解为“易变的”。首先看一个例子:publicclassShare{

软件架构 2017-11-22 发布
18 浏览

ONAP正式推出首个软件版本Amsterdam 为网络自动化提供统一架构

美国当地时间11月20日,ONAP推出了其备受期待的首个软件版本——Amsterdam版本,承诺为网络自动化提供一个统一的架构,其模块可以被网络运营商立即使用。自AT&TOpenECOMP项目与Open-Orchestration(OPEN-O)项目合并成为Linux基金会旗下的OpenNetworkAutomationPlatform(ONAP)8个多月以来,该组织的成员数已经增加到58个。通过Amsterdam版本,ONAP发布了一个统一的架构,不仅结合了两个组织的贡献代码,消除了过程的重复性,并且增加了重要的新功能,包括一个名为Holmes的新关联引擎,已经被添加到ECOMPDataCollection,AnalyticsandEvents(DCAE)模块以及一个被称为ControlLoopAutomationManagementPlatform(CLAMP)的新模块。Amsterdam版本还提供了两个“验证蓝图”,展示了如何将其模块组合起来从而提供其成员所寻求的早期用例:包括虚拟IMS在内的VoLT

软件架构 2017-11-22 发布
13 浏览

90%程序员面试都用得上的索引优化

多关于索引,分为以下几点来讲解(技术文):索引的概述(什么是索引,索引的优缺点)索引的基本使用(创建索引)索引的基本原理(面试重点)索引的数据结构(B树,hash)创建索引的原则(重中之重,面试必问!敬请收藏!)百万级别或以上的数据如何删除一、索引的概述1)什么是索引?索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,索引就相当于目录。当你在用新华字典时,帮你把目录撕掉了,你查询某个字开头的成语只能从第一页翻到第一千页。累!把目录还给你,则能快速定位!2)索引的优缺点:可以大大加快数据的检索速度,这也是创建索引的最主要的原因。,且通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。但是,索引也是有缺点的:索引需要额外的维护成本;因为索引文件是单独存在的文件,对数据的增加,修改,删除,都会产生额外的对索引文件的操作,这些操作需要消耗额外的IO,会降低增/改/删的执行效率。二、索引的基本使用(真技术文)1)创建索引:(三种方式)第一种

MySQL 2017-11-14 发布
11 浏览

读懂 MySQL 执行计划

前言在之前的面试过程中,问到执行计划,有很多童鞋不知道是什么?甚至将执行计划与执行时间认为是同一个概念。今天我们就一起来了解一下执行计划到底是什么?有什么用途?执行计划是什么?执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。在MySQL使用explain关键字来查看SQL的执行计划。如下所示://1.查询t_base_userselect*fromt_base_userwherename="andyqian";//2.查看上述语句的执行计划explainselect*fromt_base_userwherename="andyqian";执行查看上述2语句后,我们可以得出以下执行计划结果id|select_type|table|type|possible_kes|key|key_len|ref|rows|Extra—|—|—|—|—|—|—|—|—|—1|SIMPLE|t_base_user|ALL||||1|Usingwhere

MySQL 2017-11-14 发布
AD 友情赞助