Spring Cloud(十):分布式配置管理 Config 之 Git 实现

  在微服务架构集群部署的环境中,可能会有十几甚至几十个服务,若要修改项目属性参数,手动的方式是很糟糕的,所以就有了分布式配置管理这个概念。

  将服务器的配置外部化,可以存在文件或数据库中,一个专门用于管理应用服务配置的应用,可以随时修改和自动更新到目标服务器上。目前已有开源项目,如,smconfdisconfQConf

  Spring Cloud Config 为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Config Server,可以在所有环境中管理应用程序的外部属性。Spring Cloud Config 官方文档spring-cloud-config Github

阅读更多

Spring Cloud(八):路由和过滤器之API网关 Zuul

  API 网关是对外服务的一个入口,隐藏了内部架构的实现,是微服务架构不可或缺的一部分。

  Zuul 是 Netflix 基于JVM的路由器和服务器端负载均衡器。Zuul 能够与 Eureka、Ribbon、Hystrix等组件配合使用。

  相关文档可参考Spring Cloud文档:Router and Filter-Zuul Netflix Zuul GitHubZuul Wiki 文档

阅读更多

Spring Cloud(六):服务容错之断路器 Hystrix

  微服务架构中,会有多个可调用的微服务,一个请求可能会连续调用多个服务,若其中某一个服务失败可能会导致级联失败(连锁反应),最终导致整个系统不可用,这种情况称之为服务雪崩效应。

  Netflix 为微服务架构开发了一个 Hystrix 中间件(库),用于实现断路器功能,类似于电路中的保险丝。Hystrix 通过 HystrixCommand 对服务调用进行隔离来阻止故障连锁反应,能够让接口调用快速失败并迅速恢复正常、或者回退并优雅降级到另一个受 hystrix 保护的调用。

  原生 Netflix HystrixNetflix Hystrix Wiki 文档Spring Cloud Hystrix 文档

阅读更多

Spring Cloud(五):声明式 REST 客户端 Feign

  Feign 是一个声明式 Web 客户端,让 Rest 服务调用更简单。要使用 Feign ,只需在编写接口并添加其注解,就可以定义好 http 请求的参数、格式、地址等信息。

  Feign 会完全代理 Http 请求,只需向调用方法一样调用 feign 注解的客户端就可以完成服务请求及相关处理。

  Spring Cloud 支持集成 Ribbon 和 Eureka,Feign 和他们一起使用时支持客户端负载均衡功能。Spring Cloud OpenFeign 文档

阅读更多

MySQL系列(20): 范围查询优化

  MySQL 对范围查询提供了 range access method(范围访问方法) 来优化查询。

  范围访问方法使用单个索引来检索包含在一个或多个索引值区间内的表行的子集。这里的单个索引可以是单列索引或多列索引。

阅读更多

MySQL系列(19): SELECT 查询语句优化

  MySQL 查询是以 SELECT 语句形式执行数据库中的所有查找操作,SELECT 操作在执行的 SQL 语句中占大比例,SELECT 调优可以说是对 SQL 优化的首要任务。

  查询调优除了应用于 SELECT 语句外,还适用于诸如 create table…as select、insert in to…select 和 delete 语句中的 where 子句等构造。这些语句还有额外的性能考虑,因为它们将写操作与面向读的操作结合在了一起。

阅读更多

MySQL系列(18): 索引失效分析

  使用索引来提高查询性能效果是显著的,但不正确的 SQL 语句使用也会导致索引失效,索引使用未达预期,甚至执行全表扫描,此情况是严重影响性能的,在编写 SQL 语句时特别注意。

  特别强调,在每提交一条 SQL 语句时,必须使用 Explain 分析下索引的的使用。在生产环境或测试环境下,小数据的 SQL 执行感觉不到性能的差异,但一旦发布到线上大数据表,不正确的 SQL 可能会严重影响生产库的性能,并给业务带了损失,此情况仍时有发生。

阅读更多

MySQL系列(17): EXPLAIN输出信息之 Extra 字段解释

  MySQL 查询执许计划 EXPLAIN 输出的信息有个扩展信息字段 Extra,该字段包含了有关 MySQL 如何解析查询的其他信息,可以更好地帮助理解执行计划。

  该字段常见的值有 Using index、Using where。若想尽可能提高查询效率,需要关注 Using filesort 和 Using temporary 值,该值会影响查询的性能。

阅读更多