微服务
文章平均质量分 84
TGITCIC
一个始终站在技术前沿的人,喜欢传播最先进的技术和理念。
展开
-
微服务设计指导-让Redis循环写入时提高10倍的技巧
用了微服务即代表着对于开发的技能要求水平更高,任何可以提高100毫秒的地方都值得去做,如何让Redis遇到批量写入场景时提高8倍、10倍呢?本篇带你感受一下“叹为观止”的不同写法带来的性能、效率上的致命提升原创 2022-02-25 13:16:27 · 1803 阅读 · 0 评论 -
微服务设计指导-纠正目前网上近90%以上错误的对于“API跨域”问题的所谓指导
大都数人在使用前端纯静态调用后端API时发生过“跨域问题”,但网上90%以上的所谓指导是错的,一旦上了生产环境被安全扫描到时已经因为嵌了太深、开发功能太多而来不及或者没法改了。本文给出标准的指导意见从代码的一开始就告诉大家真正合理的做法应该是怎么样的。原创 2022-02-22 14:17:41 · 1136 阅读 · 0 评论 -
微服务设计指导-使用云原生微服务解决传统海量跑批时引起的系统间“级联雪崩”以及效率
TO C端应用上我们都知道如何解决级联雪崩,但是大多系统都会陷入To B端跑批倒过来“打爆“ To C端请求。这种内部系统间因为跑批而引起的级联雪崩其实也可以用“微服务”设计之道解决。本篇以10万字解说加实例告诉大家如何用先进的微服务设计来制作一个传统跑批的系统并最终把性能提升千百倍以上。原创 2022-02-20 00:51:45 · 989 阅读 · 0 评论 -
微服务设计指导-用“死信-延时”队列彻底解决业务超时补偿时发生的数据库“死锁”问题
对于业务中超时补偿我们最喜欢用周期性跑一个“批”去做补偿,而数据库死锁就发生在这种跑批job中,因此本文使用死信-延时队列彻底解决这一类问题同时又能满足上万TPS支付请求的应用。原创 2022-02-04 18:00:13 · 2849 阅读 · 2 评论 -
微服务设计指导-redis双缓存设计解决一个app版本检查API结果导致了系统崩溃
背景这个问题其实我在2016年碰到过。APP或者是小程序都有一个版本检查以便于前端进行APP的强制更新。也适合在后台和to c端前台匹配个人信息安全所需的用户协议、消息推送协议版本进行校验用。它只是一个API,这个API会在APP或者是小程序的入口入先于首页和to c端进行交互。很多人觉得这就是一个versionCheck的get请求,返回一个版本号,然后在手机端比对一下版本号,就这么简单,要什么设计呀(典型的产品经理思维)。简单?在大促时或者是抢券、领红包场景时,500并发一来,直原创 2022-01-31 23:41:48 · 2120 阅读 · 0 评论 -
微服务设计指导-使用turbine结合nacos监控多集群hystrix
首先,你要确保每一个hystrix客户端全部的设置如这一篇中所描述的跑通:微服务设计指导-hystrix的监控。且每一个hystrix的配置都是如这篇所讲的那几步保留不动。然后开始我们使用一个组件叫turbine的东西,来集成各个集群内的hystrix端。turbine收集hystrix的原理如下:其于以上原理,我们一般会在一个系统里制作一个单独的Turbine的Spring Boot Application。maven-pom.xml文件<project xmlns="ht原创 2021-12-16 10:57:12 · 1019 阅读 · 0 评论 -
微服务设计指导-hystrix的监控
我们在生产环境或者是在压测时经常会需要了解:熔断了多少次?目前哪些接口断着哪些接口开着?你总不能看那些刷的可以飞起来的日志滚屏吧?那你真的成Matrix了。因此,Hytrix是先天就带有熔断监控功能的。如下这样的截图:这是由以下这个组件组成的(我们是基于spring boot2以及spring cloud2来做的hystrix监控,版本是有严格讲究的,甚至连artifactId的名字在不同版本都有本质上的区别,你千万记得不要盲目的复制粘贴。<dependency>原创 2021-12-16 10:16:33 · 1202 阅读 · 1 评论 -
微服务设计指导-feignclient的compression参数导致报文返回为gzip格式带来的坑
背景在实际对接项目中,我们的支付网关的feignclient开启了compression-on,这是标准的正确的。如下配置代码片段feign: okhttp: enabled: true httpclient: enabled: false max-connections: 1000 max-connections-per-route: 100 compression: request: mime-ty原创 2021-12-15 17:39:24 · 2644 阅读 · 0 评论 -
微服务设计指导-spring cloud2.0面向万级TPS的调优实战
调优点调优涉及到3个方面:service prodiver端即服务提供者; service facade端即服务消费端(按照J2EE的标准称呼叫facade,还有人喜欢叫proxy端,消费端是中国人的说法); mysql端service provider端去tomcat改用undertow在service provider端,不用tomcat而改用undertow,因为undertow是nio的,它特别适合高并发场景,而且undertow可以结合操作系统底层的jni调用使得j...原创 2021-12-15 17:30:22 · 1796 阅读 · 0 评论 -
微服务设计指导-hystrix参数介绍
连接nacos的配置# nacos 服务地址spring.cloud.nacos.discovery.server-addr=${nacos-server-addr}# 注册到nacos上的命名空间spring.cloud.nacos.discovery.namespace=${nacos-namespace}# 注册到nacos上的服务名称 poolNamespring.cloud.nacos.discovery.service=back-finance-web# nacos用户名sp原创 2021-12-15 17:16:57 · 490 阅读 · 0 评论 -
微服务设计指导-微服务各层间应该如何调用
你千万别把consumer去冲到前端直接这样调用了哈。下面说一下微服务和DB、中间件(包括一切中间件)的调用关系,这个是精华,网上的复制、粘贴是没的。微服务与中间件、DB的调用关系最佳实践(这不是规范是最佳实践)从Consumer端来看设计Consumer端经常会去调用Redis,是因为consumer端有时需要通过一个状态、一个值来“反转”或者“组织”provider“端; 假设有一个provider端叫getCity,consumer端每个请求都要调一次getCity,这时就会...原创 2021-12-15 17:03:00 · 852 阅读 · 2 评论 -
微服务设计指导-实践springcloud+springboot+nacos+feign+hytrix
什么样的请求需要做成微服务模块A→模块B。而,模块B→请求模块C。如果A和B本身又有其它的请求如:模块D->模块A,模块E→模块B;此时,对于:模块C,需要做成基于单根api的微服务provider; 对于访问模块C的,需要做成微服务consumer/client;忌讳的做法服务泛滥,例:把单表的增删改查都做成了微服务,到处调用; 循环无止镜去调用微服务; 什么都做成微服务;需要记住的微服务开发规范单体的provider在1,000并发的情况下,必须在毫秒级(原创 2021-12-15 16:37:13 · 1460 阅读 · 1 评论 -
微服务设计指导-通过一个生产事故的具体例子来看微服务
前言永远记得:微服务不是代表系统快、微服务不代表性能就好了。相反,实施了微服务后如果你没有掌握好要领,你反而会比没实施微服务“死了更惨”。这句话非常有意思。我们不急,看下去。通过一个实际例子我们来看没有微服务带来的危害先。2021年11月27号因为用户模块中访问直播间的一条API被卡死后发生的事。实例例子在我们的生产上,用户模块内访问微信直播间API,互联网一侧(微信直播间应该是发生了一次网络抖动)不响、超时后,直接导致了用户模块侧外联互联网API被强制打断。打断后进而一路卡在了用户原创 2021-12-15 15:57:20 · 595 阅读 · 0 评论