微服务
文章平均质量分 90
October-
多学习
展开
-
简单实现 dubbo 集成 zipkin 的小插件
1、实现小插件的初衷以及思路相比较pinpoint,zipkin 通过brave是原生支持dubbo的调用链数据采集的,实现也比较简单,开发测试日常使用也比较简单。但是我这里要重点考虑几个问题:(1)更加灵活,虽然可以通过spring cloud seluth zipkin 也可以实现,但是要添加一些更灵活的配置就没那么简单了。(2)高度容错,允许通过分布式配置动态开启或关闭调用链的采集,还有就是即使zipkin服务端宕机了,也不能影响微服务的运行。 (3) 支持自定义标签,有时候需要...原创 2020-11-08 22:51:15 · 487 阅读 · 0 评论 -
微服务 ---- 不同软件平台的重试策略对比
目录1、微软云重试策略1.1、重试的应用场景:1.2 不同组件的重试策略:1.3、重点看下 :REST接口的重试策略2、qubole的重试策略2.1 、服务器端错误(5xx系列)2.2、客户端错误(4xx系列)2.3 使用指数回退重试失败的请求3、servicenow4、amazon5、dubbo的集群策略6、spring retry6.1 重试策略定义6.2 回退策略重试是微服务中非常重要的设计概念,不同软件平台都有自己的重试策略,这里做下简单对原创 2020-09-06 19:07:49 · 991 阅读 · 1 评论 -
微服务----幂等与发件箱模式
当你为看电视而购买一套家庭影院时,你得到一堆遥控器。一个遥控器用于电视,一个用于接收器,一个用于DVD/蓝光播放器、一个用于有线电视盒、卫星电视或机顶盒。也许你有一个多碟CD播放器,甚至是一个转盘,也许你还带着录像机等等,但是以后不会再有了,解决方案在下面。解决方案不是处理一堆远程设备,而是让一个通用远程设备来管理其他的远程设备。一旦你这样做了,你会发现不是所有的组件都是一样的,至少在他们在处理红外线信号的代码(遥控器发出的实际信号)方面是不同的。一个廉价的A/V接收器可能包含PowerToggle翻译 2020-08-29 22:46:23 · 645 阅读 · 0 评论 -
升级遗留代码的最佳实践
导读: 在传统企业甚至互联网企业中往往存在大量的遗留代码,这些遗留代码大多都能够正常工作,有的可能还运行着关键业务或者持有核心数据。但是,大部分遗留代码通常经常存在技术陈旧、代码复杂、难以修改等特点。随着时间的推移,遗留代码的维护和管理的成本越来越大。在全面转型微服务的今天,这些遗留代码该如何处理呢?Tomasz Kania-Orzeł 为我们阐述了升级遗留代码的最佳实践,我相信,这篇文章对于拥有大量遗留代码的企业 / 组织很有借鉴意义。“我在 Ruby on Rails 上有一款可以追溯到 2011转载 2020-08-16 18:51:39 · 228 阅读 · 0 评论 -
怎么验证客户端下载或者上传的文件没有问题
$原创 2020-04-11 00:30:26 · 294 阅读 · 0 评论 -
优先使用服务层而不是数据库做耗时计算(二)
最近梳理业务代码 ,在考虑一个问题,是不是可以去掉所有的关联查询。1、尽可能利用数据库的关联查询,避免在业务层增加过多的业务逻辑。优点:这么做,业务代码 相对比较简洁,开发效率也比较高。尤其是在多个微服务共享共享数据库的情况下,这种方式 开发还是比较方便的。缺点:但是如果开发人员不注意SQL的优化,很容易容易出现慢查询,甚至很多表关联到一起的情况。后期做微服务拆分,也会非...原创 2020-03-14 10:50:47 · 283 阅读 · 0 评论 -
Tengine ---- Dubbo API网关K8S 环境部署与使用
1 概述Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。在2.3.2版本后 新增加了一个支持dubbo的模块:ngx_http_dubbo_module,添加改模块后调用流程如下所示...原创 2020-03-08 17:05:31 · 1473 阅读 · 0 评论 -
这 5 种场景不适合采用微服务
微服务是软件架构的银弹吗?或许不是。这个世界上很少有东西是百分百正确的,微服务也不例外。在这篇文章里,我们将讨论在设计或重构应用程序时,哪些场景可以使用微服务,哪些场景要避免使用微服务。首先,我们要了解什么是微服务以及微服务有哪些优势。微服务是什么?为什么要使用微服务?顾名思义,微服务就是一个具体的软件服务,通常是基于应用程序上下文定义的一个规模合理的最小化服务。例如,“将文档发送...转载 2020-01-02 18:54:59 · 826 阅读 · 0 评论 -
微服务开发的 10 个最佳实践
在文章《微服务架构概览》中,我详细讨论了微服务架构以及在现代软件开发中使用它的优缺点。那么,什么是微服务架构呢?我给出的定义是:微服务架构是将软件系统分解成可独立部署的自治模块,这些模块通过轻量级的、语言无关的方式进行通信,共同实现业务目标。软件系统是复杂的。由于人脑只能处理一定程度内的复杂性,大型软件系统的高复杂性导致了许多问题。大型复杂的软件系统难于开发、增强、维护、现代化和规模化...转载 2020-01-02 18:52:21 · 604 阅读 · 0 评论 -
九大顶级 Java 开发框架
Java 创建于 1995 年,目前有 134861 个网站使用 Java,如 ESPN、SnapDeal、阿里巴巴等。在 24 年的发展历程中,Java 已经证明自己是用于自定义软件开发的顶级通用编程语言。Java 广泛应用于科学教育、金融、法律和政府等行业。在下面的饼图中,您可以看到 Java 语言在各个行业中的使用情况。这种开源编程语言是面向对象的,其目的是让应用程序开发人员编写...转载 2019-12-17 19:04:13 · 326 阅读 · 0 评论 -
微服务中的状态数据同步方式
目录1、业务场景2、状态同步实现方式2.1 实时查库2.2 使用Redis缓存2.3 本地缓存1、业务场景遇到一个小问题,涉及到微服务架构中分布式配置无法满足的场景,比如modbus数据采集,传感器数据采集等,部署方式为kubernetes。状态数据是增量的且是动态监测出来的,比如某些设备的状态、监控项的状态数据。 实时性要求高,应用层逻辑强依赖这些状态数据,...原创 2019-12-04 19:29:04 · 2850 阅读 · 0 评论 -
微服务查询优化
MySQL慢查询优化问题描述:问题描述:解决方法以快速解决问题为第一优先级优化 select总结解决方法以快速解决问题为第一优先级优化 select总结问题描述:随着系统数据量增加,很多SQL的执行效率就变低了,这时候会严重影响系统的吞吐量,如果系统有重试机制,接口又没有设计成幂等,还会影响数据的完整性和一致性,最终导致大量的客户投诉。如下图:截取部分慢SQL 即有select 查询语句,还...原创 2019-05-03 21:48:56 · 783 阅读 · 0 评论 -
分析并优化单次查询很快但是高并发时变慢的接口
目录摘要1、性能测试1.1、POSTMAN 50次逐条查询1.2、Jmeter 50 并发查询1.3、Jmeter 100 并发查询2、数据库慢查询监控2.1、SQL执行计划分析2.2、单次SQL执行时间2.3、并发情况下SQL执行时间3、Navicat Monitor 监控3.1、总体监控3.2、告警监控4、优化4.1、设置连接数...原创 2019-10-17 15:10:04 · 7667 阅读 · 1 评论 -
MySQL死锁分析
使用索引解决MySQL死锁问题摘要查看MYSQL死锁开启mysql死锁监控查死锁信息问题描述问题解决方案结论摘要当程序并发update同一张表,或者并发insert 一张表的时候都会出现数据库死锁问题。当并发insert一张表可能会出现间隙锁(小概率事件),这里先不谈,我主要描述update的常见的一种场景。查看MYSQL死锁开启mysql死锁监控create table InnoDB_...原创 2019-01-28 17:22:59 · 4532 阅读 · 0 评论 -
微服务的重试和幂等
系统架构优化-重试和幂等摘要重试常见的重试场景幂等页面 和API 幂等实现定时任务幂等mq的幂等消费微服务框架遗留问题摘要重试是一种保障业务运行的容错机制,比如页面查询、数据导出等业务场景,如果某个微服务出现异常,可以将请求动态路由到其他的服务。但是对于写的业务场景,就会导致很多问题,比如重复订购,重复生成记录,甚至重复扣费。本文重点讨论如果避免写的重试重试常见的重试场景(1)页面操作...原创 2018-11-06 19:06:08 · 4808 阅读 · 0 评论 -
MYSQL的TPS优化
系统优化-优化TPS 提升系统吞吐量摘要统计数据统计SQL执行次数general_log慢查询日志:binlog统计20181107-1757-1758文件中SQL执行次数统计insertupdate分析哪些SQL执行频率比较高。优化方式摘要系统初期使用的是分布式微服务,但是所有业务模型都在同一个数据库实例上,数据库的压力会非常大,这时需要找出系统执行频率比较高的SQL,进行优化。这里重点描述...原创 2018-11-08 20:09:20 · 4638 阅读 · 0 评论 -
Oracle 微服务 Helidon 源代码分析
@[TOC](Oracle 微服务 Helidon 源代码初探由示例代码为入口由浅入深介绍Helidon一些技术特点第一步: 读取日志配置第二步 读取配置文件第三步创建服务待续Helidon 是一个用于编写微服务的 Java 框架,这些微服务运行在由 Netty 提供支持的快速 Web 内核上。详见:https://helidon.io/docs/latest/#/about/01_intro...原创 2018-12-06 19:01:54 · 1498 阅读 · 0 评论 -
使用Zipkin-SourceMonitor-AliCheck代码优化
微服务拆分后的代码优化摘要:工具组合简单介绍ZipkinSourceMonitorAliCheck工具使用ZipkinSourceMonitor函数圈复杂度(Function Complexity)函数深度(Block Depth)AliCheck总结摘要:系统做微服务拆分后,有很多业务流程比较慢,这时我们需要使用有效的方法来定位那些地方有问题。其实最好的方法还是利用系统化的检查工具来做这件事...原创 2019-04-09 21:13:06 · 820 阅读 · 0 评论 -
微服务工程结构(一)
微服务分层架构分层架构的目的是通过关注点分离来降低系统的复杂度,同时满足单一职责、高内聚、低耦合、提高可复用性和降低维护成本。单一职责:每一层只负责一个职责,职责边界清晰,如持久层只负责数据查询和存储,领域层只负责处理业务逻辑。 高内聚:分层是把相同的职责放在同一个层中,所有业务逻辑内聚在领域层。这样做有什么好处呢?试想一下假如业务逻辑分散在每一层,修改功能需要去各层修改,测试业务逻辑需要...原创 2019-06-20 15:35:06 · 1065 阅读 · 0 评论 -
用Nginx+K8S+Docker实现dubbo微服务部署
摘要:Dubbo 微服务架构,Nginx做web服务的负载均衡,使用 K8s+docker 服务发布。部署架构图Nginx作为反向代理,负载均衡策略使用的是ip_hash ,保证每个客户每次访问的都是同一个后端。图中用到的一些K8S 核心概念:1、NodeNode作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最...原创 2019-04-18 18:48:23 · 2799 阅读 · 0 评论 -
spring分布式事务控制
spring分布式事务控制应用场景问题描述解决方法多数据源配置单元测试第一种方法:最大努力一次提交模式第二种方法:最大努力一次提交模式 但使用ChainedTransactionManagerChainedTransactionManager处理流程第三种方法:最大努力一次提交模式 但使用atomikos遗留问题应用场景现在有个项目,要做数据迁移,要把A库中的 数据迁移到B库,以后新的功能都在...原创 2018-10-17 09:45:36 · 7895 阅读 · 0 评论 -
在k8s中副本使用pod的IP注册到consul
前提条件: consul 部署在k8s 的节点上1、通过DNS获取POD的IP1.1、服务启动脚本#!/bin/bash# 启动服务,获得pod中的IP,POD中的hosts配置最后一行就是它自己的IPexport HOST_IP=$(tail -n 1 /etc/hosts|awk 'END {print}'| awk '{for(i =1; i <=NF; i++...原创 2019-09-30 15:31:28 · 3999 阅读 · 0 评论 -
spring boot +brave-5.8.0+zipkin 实现分布式链路监控
目录摘要zipkin部署POM文件修改配置文件修改配置类添加摘要Brave 2018年之前的版本基本已经废弃了,现在都是使用2019年最新的版本。博文使用的是目前最新的5.8.0版本。其基本原理就是使用Brave的拦截器来拦截RestTemplate的http请求,并发送给zipkin的Collector。对于现有的Sping boot 服务来说,修改不是太多。详细也...原创 2019-10-09 18:37:23 · 1574 阅读 · 0 评论 -
复杂业务流程的分析与拆分
使用索引解决MySQL死锁问题摘要问题描述解决方法遗留问题摘要如果系统各个模块还没有拆分,这时对于一些很复杂的业务,其中任何一个业务流程可能会多次操作数据库,尤其是当业务流程中多次出现update 或者insert的时候,如果事务处理不好就会影响性能。以下针对我们业务系统中的一个案例分析一些解决方法。问题描述当时系统使用事务管理器是:org.springframework.jdbc.dat...原创 2018-10-12 13:43:29 · 2606 阅读 · 0 评论