![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
微服务架构
文章平均质量分 73
微服务架构
猴子哥哥1024
用技术改变生活,程序猿可以改变世界!!!
展开
-
监控工具选型对比
监控维度可以分为节点资源监控(CPU、内存、带宽、磁盘)、应用探活监控(探活心跳)、应用服务能力监控(自动化回归测试)、应用服务性能监控等(全链路追踪),本文主要对比节点资源监控中常使用的prometheus和zabbix。一、监控工具1、prometheus Kubernetes自从2012年开源以来便以不可阻挡之势成为容器领域调度和编排的领头羊,Kubernetes是Google Borg系统的开源实现,于此对应Prometheus则是Google BorgMon的开源实现。Promethe转载 2021-02-27 13:29:58 · 1258 阅读 · 0 评论 -
全链路追踪选型对比
监控维度可以分为节点资源监控(CPU、内存、带宽、磁盘)、应用探活监控(探活心跳)、应用服务能力监控(自动化回归测试)、应用服务性能监控等(全链路追踪),本文主要对比全链路追踪中常使用的Zipkin、Pinpoint、SkyWalking和CAT。一、全链路追踪工具1、Zipkin Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。2、Pinpoint 韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特转载 2021-02-27 13:29:16 · 3449 阅读 · 0 评论 -
远程调用选型对比
一、远程调用 一般来说服务间远程调用有两种方式,HTTP和RPC。HTTP主要包括Httpclient、OkHTTP、RestTemplate、Feign(对RestTemplate封装可集成Ribbon做负载均衡)等;RPC主要包括dubbo、grpc、brpc、motan、rpcx、thrift等。本文主要对比springcloud框架常使用的远程服务调用框架Feign和Dubbo二、远程调用对比对比项feigndubbo协议httprpc/rmi/http性能原创 2021-02-27 13:28:17 · 1036 阅读 · 0 评论 -
网关选型对比
一、为什么使用网关 不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 1)客户端会多次请求不同的微服务,增加了客户端的复杂性 2)存在跨域请求,在一定场景下处理相对复杂 3)认证复杂,每个服务都需要独立认证 4)难以重构,随着项目的迭代,可能需要重新划分微服务 5)某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难 典型的网关架构如下:二、常见网关对比1原创 2021-02-27 13:27:33 · 3164 阅读 · 0 评论 -
配置中心选型对比
一、为什么使用配置中心1、配置的动态更新:修改配置后,不重启服务也能使修改后的配置生效2、配置集中式管理:如果每个节点自己维护配置文件,当有成百上千的服务节点时,维护起来成本太大3、配置内容的安全性和权限:有些密码、密钥等保存在代码库会被所有享有代码库权限的程序员看到,容易泄密4、多环境下的配置管理二、常见配置中心对比功能点SpringCloud ConfigApolloNacos开源时间2014.92016.52018.6配置实时推送支持(SpringCl原创 2021-02-27 13:26:50 · 1116 阅读 · 0 评论 -
注册中心选型对比
一、为什么使用注册中心 服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。二、常见注册中心对比对比项NacosEurekaConsulZookeeper数原创 2021-02-27 13:25:56 · 1310 阅读 · 0 评论 -
gateway url适配
由于版本迭代,有的时候需要做老接口的兼容适配,有很多种方式,比如在nginx配置路由规则,在网关配置路由规则,本篇通过使用反射的方式在网关层全局过滤器中重写request请求的方式实现url适配。import lombok.extern.log4j.Log4j2;import org.apache.commons.lang3.StringUtils;import org.springfram...原创 2020-05-03 13:28:05 · 2126 阅读 · 0 评论 -
网关支持跨域
一、zuul跨域:配置方式application.ymlzuul: sensitive-headers: Access-Control-Allow-Origin ignored-headers:Access-Control-Allow-Origin,H-APP-Id,Token,APPToken二、gateway跨域:过滤器方式Spring Cloud Gateway 2.x Net...原创 2020-05-03 13:18:14 · 857 阅读 · 0 评论 -
Feign实战
1、Feign 是一个声明式、模版化的HTTP客户端,有助于更便捷、优雅地调用HTTP API。在Spring Cloud中自动的为Feign整合了Ribbon和Eureka,使用时创建一个接口并添加@FeignClient即可2、使用Demo 1)添加Feign依赖<!-- Feign --><dependency> <groupId>org....原创 2019-06-15 09:48:14 · 810 阅读 · 0 评论 -
Ribbon实战
1、Ribbon简介Ribbon是Netflix发布的负载均衡器,配合Eureka使用时,可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例2、使用Demo1)引入Ribbon依赖<dependency> <groupId>org.springframework.cloud</groupId> ...原创 2019-06-10 22:24:17 · 457 阅读 · 0 评论 -
SpringCloud与SpringBoot版本兼容性
Spring Cloud是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式工具集,适合在Docker或PaaS上部署,又叫云原生应用。(云原生指面向云环境的软件架构)一、SpringCloud版本1、命名规则:英文单词 RELEASE 或 英文单词 SRX2、解释: 1)英文单词:按照字母顺序发行 2)第一个稳定版本为:英文单词 RELEASE 3)SR1:...原创 2019-05-01 14:27:01 · 1690 阅读 · 0 评论 -
分布式数据一致性/分布式事务总结
一、简述1、分布式事务/分布式数据一致性问题根源:存储资源的分布性,写多个资源,写入不能确保一定成功2、分布式事务模型: 1)AP:Application,应用程序 2)RM:Resource Manager,资源管理器 3)TM:Transation Manager,事务管理器 注:事务可分为全局事务和分支事务二、常见解决方案1、两阶段提交 1)实现思路: a)准备阶段:事务管理器(TM)通知资源管理器(RM)准备分支事务,记录事务日志,并告知事务管理器的准备结果。即挨个资源管理器除原创 2020-11-14 19:34:35 · 772 阅读 · 0 评论 -
Protobuf序列化
Protobuf是Google出品的一款编解码框架。1、优点: 1)谷歌内部长期使用,成熟度高 2)跨语言,支持C++、Java、Python、JavaScript、PHP、Ruby、C#、Objective-C等 3)码流小 4)性能高2、缺点: 1)pojo生成方式增加额外复杂度 2)灵活性差,定义数据格式后不可修改,需要重新生成pojo 3)pojo不支持json操作综上所述:Protobuf序列化方式适用于跨语言通信、对码流大小和性能要求高、且pojo不经常变化的场原创 2020-05-17 11:51:02 · 5575 阅读 · 2 评论 -
微服务简介
1、什么是微服务?2、微服务优势?3、微服务不足?4、常用通信机制?原创 2018-04-09 20:23:38 · 240 阅读 · 0 评论 -
分布式锁的三种实现方式
分布式锁的三种实现方式: 1、基于数据库:1)利用唯一索引约束;2)利用数据库自带排他锁 2、基于缓存:利用setnx()返回值 3、基于ZooKeeper:1)利用ZooKeeper同一个目录下只能有一个唯一文件名;2)利用ZooKeeper分布式锁客户端Curator 注:需要考虑的因素:单点、可重入、阻塞、失效时间一、基于数据库的实现方式基于数据库的实现方式的核心思想是:在数...转载 2018-04-08 20:00:13 · 301 阅读 · 0 评论 -
OAuth2.0
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子。有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用转载 2017-06-01 17:04:14 · 804 阅读 · 0 评论 -
SSO单点登录
一、什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。二、单点登录解决了什么问题 解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。三、单点登录的技术实现转载 2017-06-01 15:13:36 · 1569 阅读 · 0 评论 -
基于redis的setnx()、get()、getset()方法 分布式锁
一.redis命令讲解: setnx()命令: setnx的含义就是SET if Not Exists,其主要有两个参数 setnx(key, value)。该方法是原子的,如果key不存在,则设置当前key成功,返回1;如果当前key已经存在,则设置当前key失败,返回0。get()命令: get(key) 获取key的值,如果存在,则返回;如果不存在,则返回nil; get...转载 2018-04-16 21:44:57 · 5462 阅读 · 2 评论 -
如何设计一个秒杀系统
1、问题抽象:并发读、并发写、稳准快2、4要1不要:数据要尽量少、请求数要尽量少、路径要尽量短、依赖要尽量少(服务分级)、不要有单点3、秒杀思路:秒杀系统独立部署、热点数据进缓存、答题环节、动静分离、本地缓存、限流4、动静分离 1)做法: a、把静态数据缓存到离用户最近的地方:浏览器、CDN、服务端Cache b、静态化改造,直接缓存HTTP连接 c、代理层缓存 2)动静分离...原创 2019-11-20 21:54:27 · 249 阅读 · 0 评论 -
分布式事务:两阶段提交、一阶段提交、事务补偿机制
1.XAXA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。XA之所以需要引入事转载 2017-11-13 17:26:47 · 5786 阅读 · 0 评论 -
解决缓存与数据库一致性问题
1、引用缓存的好处 1)提高性能;2)减缓数据库压力;3)提高系统并发处理能力2、引用缓存的问题 1)处理逻辑变得复杂;2)使用不当,容易引起缓存和数据库数据不一致的问题3、数据不一致的原因 缓存操作与数据库操作不是原子操作,当一方操作成功、另一方操作失败时就会造成数据不一致问题4、不同情况下常用处理方法原创 2017-02-21 11:18:01 · 7559 阅读 · 0 评论