微服务
文章平均质量分 91
peterwanghao
这个作者很懒,什么都没留下…
展开
-
分布式事务中的Saga模式
微服务架构(MSA)已经变得非常流行。但是,一个常见问题是如何跨多个微服务管理分布式事务。当微服务架构将单体系统分解为自封装服务时,意味着单体系统中的本地事务现在分布到将按顺序调用的多个服务中。说到分布式事务,通常熟悉的是两阶段提交,TCC等常见模式。 初次之外还有基于Saga实现的分布式事务。什么是Saga?Saga事务模型又叫做长时间运行的事务(Long-running-transact...原创 2019-09-12 14:04:35 · 9703 阅读 · 0 评论 -
Consul架构介绍
Consul是由HashiCorp基于Go语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,采用Raft算法保证服务的一致性,且支持健康检查。Consul架构只有一个数据中心的Consul的架构图如下:我们可以看到,有三个不同的服务器由Consul管理。整个架构通过使用Raft算法工作,这有助于我们从三个不同的服务器中选出一个领导者。然后根据诸如Follower和Leader之...原创 2018-12-12 22:06:56 · 4121 阅读 · 1 评论 -
服务发现的基本原理与比较:Eureka vs Consul vs Zookeeper
前言在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。在微服务应用中,服务实例的数量和网络地址都是动态变化的,这对系统运维提出了巨大的挑战。因此,动态的服务注册与发现就显得尤为重要。解决的问题在一个分布式系统中,服务注册与发现组件主要解决...转载 2018-12-05 14:36:30 · 8725 阅读 · 0 评论 -
Spring Cloudt整合Netflix Archaius之多数据源
1.概述Netflix Archaius提供了用于连接许多数据源的类库和功能。在本教程中,我们将学习如何获取配置:使用JDBC API连接到数据库读取来自存储在DynamoDB实例中的配置通过Zookeeper配置为动态分布式配置有关Netflix Archaius的介绍,请查看本文。2.将Netflix Archaius与JDBC连接一起使用正如我们在介绍性教程中所解释的,每...原创 2018-11-21 23:17:30 · 3708 阅读 · 0 评论 -
使用Netflix Archaius进行配置管理
在这篇文章中,我们将讨论Archaius,一个非常酷且易于使用的Netflix配置管理工具。通常我们都是如何读取配置变量的呢?一种是使用System.getProperty()方法获得JVM系统属性。例如下面这样:String prop = System.getProperty("myProperty");int x = DEFAULT_VALUE;try { x = Integer...原创 2018-11-14 10:28:32 · 4646 阅读 · 0 评论 -
Spring Cloudt整合Netflix Archaius介绍
1.概述Netflix Archaius 是一个功能强大的配置管理库。它是一个可用于从许多不同来源收集配置属性的框架,提供对配置信息的快速及线程安全访问。除此之外,Archaius允许属性在运行时动态更改,使系统无需重新启动应用程序即可获得这些变化。在这个介绍性文章中,我们将设置一个简单的Spring Cloud Archaius配置,我们将解释底层发生了什么,最后,我们将看到Spring...原创 2018-11-07 23:49:27 · 4182 阅读 · 7 评论 -
Spring Cloud Vault 使用示例
1.概述在本文中我们将展示如何在Spring Boot应用程序中使用Hashicorp的Vault来保护敏感的配置数据。我们在这里假设你已经掌握了一些Vault知识,并且已经准备好了运行环境。如果不是这样的话,让我们花点时间阅读下之前的文章Vault 介绍教程,以便我们熟悉其基础知识。2. Spring Cloud VaultSpring Cloud Vault是Spring Cloud堆...原创 2018-10-26 10:19:47 · 6731 阅读 · 2 评论 -
使用Hashicorp Vault管理私密信息
HashiCorp Vault是一款企业级私密信息管理工具。说起Vault,不得不提它的创造者HashiCorp公司。HashiCorp是一家专注于DevOps工具链的公司,其旗下明星级产品包括Vagrant、Packer、Terraform、Consul、Nomad等,再加上Vault,这些工具贯穿了持续交付的整个流程。管理私密信息的复杂性在应用程序的整个生命周期中管理私密信息并非易事。如果...原创 2018-10-15 21:40:48 · 1829 阅读 · 0 评论 -
Spring Cloud Task 简单示例
1. 概述Spring Cloud Task的目标是为Spring Boot应用程序提供创建短运行期微服务的功能。在Spring Cloud Task中,我们可以灵活地动态运行任何任务,按需分配资源并在任务完成后检索结果。Tasks是Spring Cloud Data Flow中的一个基础项目,允许用户将几乎任何Spring Boot应用程序作为一个短期任务执行。2. 一个简单的任务应用程序...原创 2018-10-12 22:07:23 · 19971 阅读 · 1 评论 -
Zuul和Eureka的负载均衡示例
1.概述在本文中,我们将介绍如何通过Zuul和Eureka一起使用来实现负载均衡。我们将请求路由到注册在Spring Cloud Eureka,并通过Zuul Proxy来发现的REST服务。2.初始设置我们需要设置Eureka服务器/客户端,如文章介绍微服务中服务治理Spring-Cloud-Netflix-Eureka所示。3.配置ZuulZuul还从Eureka服务站点获取服务列...原创 2018-09-18 09:51:22 · 10008 阅读 · 0 评论 -
使用Spring Cloud Netflix Zuul代理网关访问后台REST服务
1.概述在本文中,我们将探讨如何在互相单独部署的前端应用程序和后端REST API服务之间进行通信。目的是解决浏览器的跨域资源访问和同源策略限制,允许页面UI能够调用后台的API,即使它们不在同一个服务器中。我们在这里创建了两个独立的应用程序 - 一个UI应用程序和一个简单的REST API,我们将在UI应用程序中使用Zuul代理来代理对REST API的调用。Zuul是Netflix基于...原创 2018-09-11 13:49:18 · 1671 阅读 · 1 评论 -
Hystrix断路器集群监控Turbine
Netflix Hystrix 可以为应用程序中的命令状态提供实时指标。这些数据通过一个名为Hystrix Dashboard的非常酷的界面以图形形式展现出来。但是它只能提供单个服务的信息,如果需要调用几十个微服务,我们希望看到的是这些微服务的性能,而不是一个微服务一个微服务的去查看。所以我们需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上,使用Turbin...原创 2018-08-20 16:14:20 · 431 阅读 · 0 评论 -
用于监控分布式系统的四个黄金信号
为客户提供高质量的应用程序或服务取决于幕后的高可用性基础架构。当您的服务不可用,速度慢或损坏时,客户可能会感到沮丧,减少支出或完全停止使用您的服务。您的运营团队需要快速地了解问题,以防止服务质量降低并影响您的业务。目前流行的现代分布式系统以基础架构和主机指标(如CPU利用率,APM指标,如响应时间,数据库指标等)的形式发布数百个指标。不断监视所有这些指标是不切实际的,因此我们建议在监视分布式系...翻译 2018-08-22 23:10:17 · 3933 阅读 · 0 评论 -
Spring Cloud Consul 基础使用介绍
1.概述onsul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。Consul是一个工具,提供解决微服务架构中一些最常见挑战的组件:服务发现 -...原创 2018-12-07 14:52:15 · 2280 阅读 · 0 评论 -
Spring Cloud CLI简介
1.简介在本文中,我们将介绍Spring Boot Cloud CLI(或简称Cloud CLI)。该工具为Spring Boot CLI提供了一组命令行增强功能,有助于进一步抽象和简化Spring Cloud部署。CLI于2016年底推出,允许使用命令行、.yml配置文件和Groovy脚本快速自动配置和部署标准Spring Cloud服务。2.安装Spring Boot Cloud CL...原创 2018-12-20 22:26:38 · 4865 阅读 · 1 评论 -
分布式事务处理中的幂等性
事务是指以全有或全无的方式执行的一系列操作。所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。以数据库为列,事物包含四个特性(ACID)原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。一致性(Consistency):事务的执行使数据从一个状态转换为另一...原创 2019-09-06 15:56:26 · 2391 阅读 · 0 评论 -
Spring Boot四大神器之Actuator
Spring Boot自带一个名为Actuator执行器的模块,可以启用有关应用程序的指标和统计信息。例如,我们可以收集日志,查看指标,执行线程转储,显示环境变量,了解垃圾收集,以及显示BeanFactory中配置的bean。您可以通过HTTP,JMX公开此信息,或者甚至可以通过SSH直接登录到该过程。公开应用程序指标和信息当你已经成功开发了Spring Boot 应用程序后,将它部署到了生产...原创 2019-03-07 22:34:09 · 1695 阅读 · 0 评论 -
Spring Boot四大神器之CLI
1.简介Spring Boot CLI 为Spring Cloud 提供了Spring Boot 命令行功能。您可以编写groovy脚本来运行Spring Cloud 组件应用程序(例如@enableurekaserver)。您还可以轻松地执行加密和解密等操作,以支持具有机密配置值的 SpringCloud 配置客户端。使用启动器cli,您可以从命令行方便地同时启动诸如eureka、zipkin...原创 2019-03-06 22:19:58 · 24024 阅读 · 0 评论 -
Spring Boot四大神器之Starter
1.概述依赖管理是任何复杂项目的关键方面。手动完成这些操作并不理想; 你花在它上面的时间越多,你在项目的其他重要方面所花费的时间就越少。构建Spring Boot启动器是为了解决这个问题。Starter POM是一组方便的依赖描述符,您可以在应用程序中包含这些描述符。您可以获得所需的所有Spring和相关技术的一站式服务,而无需搜索示例代码,并复制粘贴依赖描述符。目前有超过30个启动启动器 ...原创 2019-02-26 14:10:52 · 4674 阅读 · 0 评论 -
Spring Boot Admin 介绍
1.概述Spring Boot Admin是一个Web应用,用于管理和监视Spring Boot应用程序的运行状态。每个Spring Boot应用程序都被视为客户端并注册到管理服务器。背后的数据采集是由Spring Boot Actuator端点提供。在本文中,我们将描述配置Spring Boot Admin服务器的步骤以及应用程序如何成为客户端。2.设置管理服务器首先,我们需要创建一个简...翻译 2019-02-19 14:10:17 · 3462 阅读 · 2 评论 -
Spring Boot四大神器之创建自定义Starter
1. 概述Spring Boot为开发人员提供了大多数流行的开源项目的启动器,但我们不仅限于此。我们也可以编写自己的自定义启动器。 如果想为我们的组织提供一个内部库,并且将它在Spring Boot上下文中使用,那么为它编写一个启动器也许是一个好的习惯。这些启动器使开发人员能够避免冗长的配置并快速启动他们的开发。但是,由于隐藏了在后台发生的很多事情,有时候很难理解注释或只是在pom.xml中...原创 2019-02-27 21:30:48 · 2725 阅读 · 0 评论 -
Spring Boot四大神器之Auto Configuration
Spring Boot非常简单容易上手,它隐藏了很多内容而不需要你去关心。但对于一个好的开发人员也许希望知道Spring Boot自动配置背后到底发生了什么?Spring Boot并不属于一种新的技术,只不过Spring Boot的启动器帮我们配置了若干个被Spring管理的bean,当我们的项目依赖这些jar并启动Spring应用时,Spring的Container容器已经把jar包下的对象加...原创 2019-02-22 12:10:20 · 17063 阅读 · 1 评论 -
服务监控 Spring Boot Actuator 介绍
1. 概述在本文中,我们将介绍Spring Boot Actuator。首先介绍一些Actuator的基础知识,然后详细讨论Spring Boot 1.x与2.x中的用法和不同点。我们将学习如何在Spring Boot 1.x中使用,配置和扩展此监视工具。然后,我们将讨论如何使用Boot 2.x和WebFlux利用反应式编程模型来做同样的事情。Spring Boot Actuator自201...原创 2019-01-31 11:45:05 · 1945 阅读 · 0 评论 -
微服务中的日志管理 — ELK
通过使用微服务,我们能够解决许多在单体应用中暴露的问题,并且它允许我们创建稳定的分布式应用程序,并对代码,团队规模,维护,发布周期,云计算等进行所需要的控制。但同时微服务也引入了一些挑战,例如分布式日志管理和查看。需要提供在众多服务中查看分布的完整事务日志和分布式调试的能力。实际上,挑战在于微服务是相互隔离的,它们不共享公共数据库和日志文件。随着微服务数量的增加以及我们使用自动化持续集成工具实现...原创 2019-01-22 15:41:15 · 19935 阅读 · 0 评论 -
Hoverfly - 微服务虚拟化示例
微服务虚拟化是一种模拟基于异构组件的应用程序(如API驱动的应用程序,基于云的应用程序或面向服务的体系结构)中特定组件行为的技术。Hoverfly是一个轻量的API服务模拟工具(有时候也被称作服务虚拟化工具)。 使用Hoverfly,您可以创建应用程序依赖的API的真实模拟。什么是微服务虚拟化?目前云应用程序大量使用微服务,这些微服务相互交互以实现某些业务能力。在开发这种类型的生态系统时,我...原创 2019-01-17 20:50:28 · 4256 阅读 · 2 评论 -
消费者驱动的契约测试 Spring Cloud Contract介绍
什么是契约测试测试是软件流程中非常重要,不可或缺的一个环节。一般的测试分为单元测试,集成测试,端到端的手工测试,这也是构成测试金字塔的三个层级。我们今天将要讨论的话题是契约测试,它是处于单元测试和集成测试中间的一个环节。这三个层级分别测试的场景如下:单元测试:测试单个service集成测试:测试由多个services组成的系统端到端测试:测试从用户到各个外部系统的整个场景契约测试的作...原创 2019-01-11 11:35:06 · 1668 阅读 · 1 评论 -
分布式中的一致性算法:Paxos和Raft比较
概述分布式中的一致性可以被描述为在协作解决问题的一组操作之间达成一致的行为。随着开源分布式计算和存储平台的兴起,一致性算法已成为复制的基本工具。其中Paxos和Raft是最受欢迎的一致性算法,通过消除单点故障来提高系统的弹性。虽然Paxos在分布式一致性方面主导着学术和商业话语,但协议本身太复杂而无法推理,因此需要更易理解的算法。研究人员对Paxos进行了广泛的研究,而Raft在工程师中非常受...原创 2018-12-18 11:01:57 · 3628 阅读 · 0 评论 -
Spring Cloud Netfix Hystrix断路器例子
1.概述在本文中我们将介绍Spring Cloud Netflix Hystrix - 断路器。我们将使用该库来实现断路器的企业模式,该模式描述了应用程序中不同级别的故障级联策略。断路器的工作原理类似于电子产品:Hystrix 用来观察正在调用某些相关服务的方法。如果出现了故障,它将打开断路器并将呼叫转发到回退方法。该库将设置失败次数的阈值,正常情况下它将使电路保持开放状态。当超过容忍...原创 2018-08-16 14:33:25 · 647 阅读 · 0 评论 -
微服务与断路器
众所周知,微服务架构具有许多优点。包含松散耦合,自治服务,分散治理,更容易连续交付等。但与此同时,它使架构变得脆弱,因为每个用户的操作结果都会调用多个服务。它通过网络上的远程调用替换了单体系结构中的内存调用。但是当一个或多个服务不可用或表现出高延迟时,会导致整个系统出现级联故障。服务客户端的重试逻辑只会使情况更糟糕,并且可能导致系统彻底的崩溃。断路器模式有助于防止跨多个系统的这种灾难性级联故障...原创 2018-08-08 16:01:17 · 3003 阅读 · 2 评论 -
分布式计算中的八大谬论
构建分布式系统是一项复杂的工作。架构,设计,编码和测试对分布式系统的成功都至关重要。任何一点的失败都可能导致性能下降,故障频发,费用超标以及最终导致客户流失。在20世纪90年代Sun Microsystems的Peter Deutsch,James Gosling和其他人总结出了分布式计算的八个谬论。随着时间的推移,IT人员对这些谬论的认识可能已经消退,所以想要提醒下大家。八大谬论是:网...翻译 2018-07-30 22:35:02 · 2792 阅读 · 0 评论 -
使用Spring Cloud搭建的微服务示例
Spring Cloud是一个可以构建云应用的框架,使用该框架可以解决应用在迁移到分布式环境时所面临的众多问题。应用的微服务化目的是旨在简化开发、部署和维护的工作量,将应用程序分解可以帮助程序开发人员一次只专注于一个问题,同时在进行系统改进时不影响其它部分的运行。另一方面,使用微服务时也带来了一些挑战:配置的外部化实现,配置改变是不需要重启服务。 服务是如何发现的。 服务在不同主机上...原创 2018-04-25 23:47:25 · 1418 阅读 · 0 评论 -
使用Spring Cloud Sleuth在应用中进行日志跟踪
Spring Cloud Sleuth是一个在应用中实现日志跟踪的强有力的工具。使用Sleuth库可以应用于计划任务 、多线程服务或复杂的Web请求,尤其是在一个由多个服务组成的系统中。当我们在这些应用中来诊断问题时,即使有日志记录也很难判断出一个请求需要将哪些操作关联在一起。如果想要诊断复杂操作,通常的解决方案是在请求中传递唯一的ID到每个方法来识别日志。而Sleuth可以与日志框架Logb...原创 2018-04-16 22:21:10 · 18105 阅读 · 3 评论 -
介绍如何在Spring-Cloud中使用Zookeeper作为服务注册中心
本文将介绍如何使用Zookeeper在微服务框架中实现服务发现,该服务发现机制可作为云服务的注册中心。通过Spring Cloud Zookeeper为应用程序提供一种Spring Boot集成,将Zookeeper通过自动配置和绑定 的方式集成到Spring环境中。在本例子中我们将创建两个应用程序:提供服务的应用程序(称为 服务提供者)使用此服务的应用程序(称为 服务消费者)A...原创 2018-03-28 08:57:17 · 8128 阅读 · 1 评论 -
介绍客户端负载均衡Spring Cloud Ribbon
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。可轻松地将面向服务的REST请求自动转换成客户端负载均衡的服务调用。Netflix Ribbon是一个在云端使用的IPC(进程间通信)库,主要提供客户端的负载均衡算法。除了客户端负载均衡算法,Ribbon还提供其他功能:服务发现集成 - Ribbon负载均衡器可...原创 2018-04-02 22:26:32 · 345 阅读 · 0 评论 -
使用Spring-Cloud-Config创建配置中心
Spring Cloud Config是Spring创建的一个全新的服务端/客户端项目,为应用提供分布式的配置存储,提供集中化的外部配置支持。它除了适用于Spring构建的应用程序外,也可以在其他语言运行的应用程序中使用。Spring Cloud Config分为服务端和客户端两部分。其中服务端称为分布式配置中心,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息的功能;客户端则是微服...原创 2018-03-22 11:03:34 · 2216 阅读 · 0 评论 -
介绍Spring-Cloud的版本是如何定义的
Spring Cloud是一个由众多独立子项目组成的大型综合项目,每个子项目有不同的发行节奏,都维护着自己的发布版本号。Spring Cloud通过一个资源清单BOM(Bill of Materials)来管理每个版本的子项目清单。为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。这些版本名称的命名方式采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,比如...原创 2018-03-20 22:44:39 · 6816 阅读 · 0 评论 -
介绍微服务中服务治理Spring-Cloud-Netflix-Eureka
1、概述微服务框架中最为核心和基础的模块就是服务治理,它主要用来实现各个微服务实例的自动化注册与发现。在这个体系结构中有一个“中心点”——服务注册中心,每个服务必须注册到服务注册中心。而各个服务之间进行通讯并不需要知道具体服务的主机名和端口。这种实现的一个缺点是所有客户机必须实现某种逻辑来与这个中心点进行交互,这样在实现服务请求之前将增加一次额外的网络往返。Spring Cloud 使用 ...原创 2018-03-16 22:31:41 · 9571 阅读 · 1 评论 -
Spring Boot整合Mybatis
mybatis开发团队为Spring Boot 提供了 MyBatis-Spring-Boot-Starter。Mybatis-Spring-Boot-Starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。转载 2017-12-05 23:57:37 · 433 阅读 · 0 评论 -
Spring Boot启动依赖分析
Spring Boot对Spring应用的开发进行了简化,提供了模块化方式导入依赖的能力,可方便快捷地开发RESTful Web服务。简化了开发过程中大量XML配置以及复杂的依赖管理,让开发人员更加关注于业务逻辑。本文讲解了Spring Boot自动配置和启动依赖的实现原理。原创 2017-11-24 23:21:21 · 5478 阅读 · 0 评论 -
DevOps监控微服务的五条原则
微服务的需求可以归纳为一个词:速度。这种更快提供功能完善且可靠的软件的需求,彻底改变了软件开发模式。毫无疑问,这个改变对软件管理,包括系统监控的方式,都产生了影响。在这篇文章里,我们将重点关注放在有效地监控产品环境中的微服务所需做出的主要改变。我们将为这一新的软件架构拟定 5 条指导性原则来调整你的监控方法。转载 2017-11-16 14:51:35 · 3029 阅读 · 0 评论