微服务
文章平均质量分 78
Julywhj
负责软件开发,及其系统架构设计。
展开
-
生产环境p0级故障:用户钱付了,订单还是显示未支付,用户把我们投诉了!
2022年9月3号,星期六,天气晴。辛苦一周终于可以不用早起美美的睡个懒觉啦。结果事与愿违…;生产环境爆出p0级事故。用户订单支付成功了,但是订单状态显示未支付…毫无疑问,用户肯定会炸,结果不是客诉,就是差评。用户感觉受到了欺诈那么这种情况是怎么发生的呢?我们先简单分析下订单支付的完整流程:订单支付的完整流程1、用户从平台前端(app、小程序等)发起支付申请,到订单服务,计算本次需要支付金额;2、订单服务向支付服务提交支付申请;原创 2022-09-12 16:53:43 · 933 阅读 · 1 评论 -
SpringCloud Gateway 基于nacos实现动态路由
Spring Cloud Gateway作为微服务的入口,需要尽量避免重启,而现在配置更改需要重启服务不能满足实际生产过程中的动态刷新、实时变更的业务需求,所以我们需要在Spring Cloud Gateway运行时动态配置网关。原创 2022-09-06 19:08:49 · 1808 阅读 · 0 评论 -
基于GoLang实现API短信网关
在消息系统中,短信网关和短信渠道的对接是最核心的功能。其中短信网关是对外提供服务的接口,所有需要发送短信的操作都需要通过短信网关分发到对应的渠道上。一旦定型,后续就很少,也很难调整。而短信渠道是接收网关的请求,调用渠道接口执行真正的发送短信操作。每个渠道的接口,传输方式都不尽相同,所以在这里,短信网关相对短信渠道模块的作用,类似设计模式模式中的wrapper,封装各个渠道的差异,对网关呈现统一的接口。而网关的功能就是为业务提供通用接口,一些和渠道交互的公共操作,也会放置到网关中。...原创 2022-07-20 19:09:48 · 826 阅读 · 0 评论 -
Golang学习路线及基础知识点梳理
大家好,今天给大家分享Go语言的学习路线,如果大家想转Go语言或者已经在使用Go语言了,那么可以根据这个学习路线进行学习和巩固。另外分享Go语言的基础知识点,分享给大家,大家可以根据这个思路去梳理下其他的语言,构建下自己的知识体系,形成自己的技能拓扑......原创 2022-06-17 21:56:51 · 596 阅读 · 0 评论 -
Golang 操作Redis五大数据类型 String、List、Hash、Set、Zset
前言使用redis首先要部署redis,载个安装包,部署下即可,本文不赘述了。redis官网:https://redis.io/接着要下载golang的redis资源包,golang官方推荐的有redisgo和go-reids,个人认为go-redis的封装更加人性化,redisgo的调用是基于命令的,go-redis是基于方法的,所以本文先来介绍go-redis的使用。2行代码来比较下2种资源包的调用方式:redisgo: client.Do("SET", "mykey", "我是数据", "EX原创 2022-05-30 12:29:59 · 2742 阅读 · 0 评论 -
基于网关服务监控方案
一、需求背景为监控微服务接口运行情况如响应时间、成功率、接口请求频次、业务高峰期段等信息,需对接口进行监控,并可视化展示。二、方案选择方案选择,通常解决方案采用Metics埋点方式,业务系统基础埋点SDK,将埋点日志输出到本地,通过agent将埋点日志发送到Kafka,由Kafka将埋点日志推送到InfuxDB,并通过Grafan进行展示。这里由于我们服务尚未基础埋点,集成埋点工作量较大,短期内无法落地。同时现有技术体系中未使用InfuxDB等时序数据库和数据展示工具。所以我们采用简单数据采原创 2022-04-30 23:27:25 · 1593 阅读 · 1 评论 -
Centos7安装docker仓库Harbor
Centos7安装docker仓库Harbor原创 2022-03-30 19:55:23 · 2083 阅读 · 0 评论 -
线程的生命周期
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自运行,所以CPU 需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。新建状态(NEW)当程序使用 new 关键字创建了一个线程之后,该线程就处于新建状态,此时仅由 JVM 为其分配内存,并初始化其成员变量原创 2022-01-14 13:37:23 · 693 阅读 · 0 评论 -
基于腾讯云tdmq消息队列封装SpringBootStarter(一)
一、环境准备1.1 注册腾讯云TDMQ创建tdmq集群创建完成后记录下集群ID(clusterId);1.2 创建命名空间创建好集群后,在命名空间中新建命名空间,命名空间名称可以根据实际业务场景进行区分,比如这里创建可以根据测试环境、预发布环境、生产环境等进行区分创建。新建命名空间1.3、创建好命名空间后,新建个`topic`主题。创建topic以上信息创建好后,我们在集群中可以看到集群的访问地址,如下:查看接入地址在创建tdmq集群时我们需要..原创 2022-01-03 14:38:44 · 1421 阅读 · 0 评论 -
Go语言Elasticsearch数据清理工具
Go语言Elasticsearch数据清理工具微服务架构中收集通常大家都采用ELK进行日志收集,同时我们还采用了SkyWalking进行链路跟踪,而SkyWalking数据存储也用到了ES,SkyWalking每天产生大量的索引数据,如下:WX20211008-104751@2x这里一天大概产生了700左右个索引数据。对历史的链路数据我们不做过多的保留。这里我整理了个小工具,可以定期清理es数据。一、清理思路可以看到索引数据都是以日期结尾,我们可以根据日期去匹配索引数据,并对原创 2021-10-08 11:34:21 · 879 阅读 · 0 评论 -
CompletableFuture 异步编排详解
CompletableFuture 异步编排详解详情请查看:JulyWhj博客业务场景:查询商品详情页面逻辑比较复杂,有些数据需要远程调用,必然需要花费更多的时间。假如商品详情每个页面查询,需要的如下的标准时间完成,那么用户需要10s才能完成。这里我们需采用异步查询,但是比如接口A查询商品信息,而接口B需要查询商品的SKU,接口C需要查询商品供应商等信息,如接口C必须依赖接口A或接口B的返回值。那么我们就需要使用CompletableFuture接口来实现。一、开启异步编程runAsync:无入原创 2021-09-30 17:28:38 · 703 阅读 · 0 评论 -
Redis面试题-持续更新
1、什么是Redis?Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis与其他key-value缓存产品有一下三个特点:redis支持数据的持久化可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis支持丰富的数据类型Redis不仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。Redis支持数据的备份即master-slave模式的数据备份。Redis优势原创 2021-08-17 18:07:28 · 244 阅读 · 0 评论 -
SpringCloud研发微信公众平台-前端环境搭建
SpringCloud研发微信公众平台-前端环境搭建本次课程前端技术栈采用 uni-app + uview 框架进行研发。研发工具采用HBuilderx工具研发工具下载HBuilderx工具 官方下载地址,这里推荐下载App开发版,下载对应的平台版本即可。工程创建打开安装好的编译器HBuilderx。创建完成后,项目目录如下项目本地运行微信小程序方式运行在编辑器中,选择运行–运行到小程序模拟器–微信开发者工具这个过程第一次时间较长,如出现一下页面,则项目运行成功。[外链图片转存原创 2021-07-07 07:41:54 · 376 阅读 · 2 评论 -
微服务系统监控体系
分布式系统监控体系微服务的分层和监控监控是为服务治理的关键环节,监控系统的完善程度,直接影响整个微服务系统质量的好坏,我们微服务在线上运行的时候,有没有一套完善的监控体系,能够实时了解它的健康情况,对整个系统的可靠性和稳定性是非常重要的。本篇文章会介绍一下比较完善的微服务监控体系需要涉及哪些层次。微服务的监控层次主要划分为五个监控层次,分别是:基础设施监控、系统层监控、应用层监控、业务层监控、端用户体验监控。如下图基础设施监控该层次一般由运维团队负责,涉及的方面有网络交换机等,底层设备监控,这些原创 2021-01-06 21:13:11 · 1232 阅读 · 1 评论 -
微服务最经典的三种服务发现机制
微服务最经典的三种服务发现机制大家好,今天给大家分享一篇关于微服务的服务发现机制。在分布式系统当中有许多服务,在有些公司可能有几十个甚至上百个的服务。那么这些服务当中有生产者有消费者,那么这些消费者该怎么发现生产者呢?这就是微服务的服务发现问题。经过实战经验,这里给大家总结了三种主流的服务发现机制,第一种传统基于LB的模式,第二种进程内LB模式,第三种主机独立LB模式。传统LB模式目前大部分公司还是基于传统的LB方式进行做服务发现和负载均衡的,这个模式有一个独立的LB负载均衡的概念,比如使用硬件的F原创 2021-01-06 20:57:02 · 1086 阅读 · 0 评论 -
微服务总体技术架构体系是怎样设计的?
微服务总体技术架构体系是怎样设计的?为服务的技术架构体系对于一些成型的互联网公司来说,内部一般都会有一套完善的微服务架构体系。我在下面列举了一个相对比较成型的微服务架构体系。并不是说所有的公司都是这种完善的架构体系。有些公司在成长的早期,或者中期并不是特别完善。对于大公司来说,一般我们回把他的技术体系进行模块化管理。微服务架构体系层次结构接入层最上面的接入层,主要是我们的负载均衡,负责把外部的流量接入到内部的平台上。基础设施层主要是由运维团队来处理,涉及的内容包括计算、网络、存储、NOC监控原创 2021-01-06 20:54:36 · 567 阅读 · 1 评论 -
微服务框架需要考虑哪些治理环节?
微服务框架需要考虑哪些治理环节?如果一个公司的微服务多了,需要有管理和治理。今天给大家介绍一下服务治理环节,一个好的微服务体系需要关注哪些治理环节。服务注册发现首先,我们的微服务框架需要注册服务发现,微服务当中有很多服务,几十个甚至上百个,他们之间有错综复杂的依赖关系。这个时候就存在消费者怎么去发现我们的服务的生产者。这个就是服务注册和发现要解决的问题。服务的负载均衡为了应对大的流量我们的服务一般是多份部署,这个时候就存在负载均衡。另外我能服务需要路由这个能力非常重要,如果我们需要支持灰度发布、原创 2021-01-06 20:52:20 · 469 阅读 · 0 评论 -
Django restframework(二) 视图及其视图集-用法详解
一、Request 与 Response1.1 RequestREST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典对象保存到Request对象中。Request对象的原创 2020-07-24 13:42:21 · 630 阅读 · 0 评论 -
Spring Boot 入门(一):入门案例
Springboot 入门入门案例创建spring boot项目在pom.xml 文件,我们需要添加两部分依赖。— 让我们的项目继承spring-boot-starter-parent 的工程— 加入spring-boot-starter-web 的依赖— spring boot 官网搭建教程 Spring Boot Reference Guide<!-- Inherit ...原创 2018-10-27 19:10:09 · 437 阅读 · 0 评论 -
Spring Boot入门 (二) :无xml配置实现
无xml配置的实现自Spring3.X 以后 spring 提供了很多的注解来代替XML文件的配置,最核心的是下面两个注解。::@Configuration:: 标注该类是配置类,类似于我们定义的applicationContext.xml::@Bean:: 类似于我们在之前的spring配置文件中配置的<bean id=" " class=""&原创 2018-10-27 21:21:04 · 1110 阅读 · 0 评论 -
SpringBoot Web开发
1、简介使用SpringBoot;1)、创建SpringBoot应用,选中我们需要的模块;2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来3)、自己编写业务代码;自动配置原理?这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxxxxxxAutoConfiguration:帮我们给容器中自动配置组...原创 2018-11-23 09:49:57 · 498 阅读 · 0 评论 -
一、Spring Cloud项目搭建
1、建立父工程 首先创建一个父工程,名字为spring cloud打开IDEA(以下编码过程编码工具采用IDEA)。创建新工程为Spring Cloud。 选择下一步引入pom.xml代码如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/...原创 2018-12-31 18:10:12 · 585 阅读 · 0 评论 -
二 、Eureka服务注册与发现
二 、Eureka服务注册与发现1、服务的注册与发现关系调用说明:服务生产者启动时,向服务注册中心注册自己提供的服务服务消费者启动时,在服务注册中心订阅自己所需要的服务注册中心返回服务提供者的地址信息个消费者消费者从提供者中调用服务2、启动eureka注册中心 Eureka是Spring Cloud Netflix微服务套件中的一部分,可以与Springbo...原创 2019-03-09 12:19:33 · 396 阅读 · 0 评论 -
docker 简单使用
1、 删除镜像docker rmi -f image(imageid)创建 |启动容器docker create image 创建的容器是停止状态docker start/stop container_id启动/停止容器docker run image创建并启动容器image-可以为镜像标签或Idcontainer_id为容器iddocker run -i -t ubu...原创 2019-04-24 13:44:54 · 179 阅读 · 0 评论 -
docker 部署 kafka
安装镜像docker pull wurstmeister/kafka启动kafka容器docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.199.112:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192...原创 2019-04-24 13:51:36 · 851 阅读 · 0 评论 -
docker(ELK) - logstash-elasticsearch-kibana
拉取logstash镜像docker pull docker.elastic.co/logstash/logstash:5.5.1拉取elasticsearch镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:5.5.1拉取kibana镜像docker pull docker.elastic.co/kibana...原创 2019-04-24 13:58:36 · 366 阅读 · 0 评论 -
基于Netty 手写 Dubbo 框架
基于Netty 手写 Dubbo 框架1、Dubbo是什么,解决什么样的问题?为了解决模块拆分后,彼此远程调用的问题。RPC -> Remote Procedure Call 远程调用,常见的RPC框架有:阿里的:dubbo。当当的:dubbox。谷歌的:grpc。SpringCloud(一站式开发)等。2、实现方案查看官网dubbo结构图1、首先通过register将...原创 2019-05-04 14:50:52 · 2164 阅读 · 1 评论 -
Spring Boot 入门(三) :自动化配置实现
自动化配置实现我们在上章编写入门案例的时候,我们使用的是Spring Mvc 作为我们的表现层框架,但是我们都知道我们要使用Spring Mvc 我们就需要在web.xml文件中配置Spring Mvc 的前端控制器DispatcherServlet。但是我们在编写入门案例的时候,我们并没有去做任何的配置,那么我们为什么可以使用呢?原因是Spring Boot 给我们做了自动化配置,下面我们学习...原创 2018-10-28 16:12:05 · 305 阅读 · 0 评论