2021-04-30

服务容错

1.系统遭受恶意爬虫袭击,在放大效应下没有对下游依赖服务做好限速处理,最终导致下游服务崩溃
2.系统依赖的某个服务发生延迟或者故障,数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应,导致整个系统拒绝对外提供服务。

解决方案

1.限流模式:
常用于下游服务容量有限,但又怕出现突发流量猛增(如恶意爬虫,节假日大促等)而导致下游服务因压力过大而拒绝服务的场景。常见的限流模式有控制并发和控制速率,一个是限制并发的数量,一个是限制并发访问的速率。
2.超时:
为服务调用方设置一个调用服务的时间限制,超时后可以使用sentinei的降级机制,调用准备好的预处理方案。
3.仓壁模式:
仓壁隔离,就是将资源进行隔离,调用方不能无限制的进行调用,举个例子,假如有一艘船,其中一个船舱漏水了,如果我们将每个船舱之间通过钢板顶死,进行隔离,那么其中一个漏水就不会影响到其他船舱,我们的船还可以继续航行。
4.熔断器:
在调用方进行定义请求失败的策略,当失败的次数打到一定的数量时,熔断器将会打开,将不会再调用到底层的服务,之后每隔一定的时间(设置的熔断窗口时间)将释放一个请求到底层的服务,如果还是失败则继续保持熔断器的开启直到下一次熔断串口的时间,如果请求成功了,则关闭熔断器,开始正常的调用。

sentinel的基本使用

1.加入sentinel的依赖

com.alibaba.cloud spring-cloud-starter-alibaba-sentinel jackson-dataformat-xml com.fasterxml.jackson.dataformat 1 2 3 4 5 6 7 8 9 10 11 2.下载sentinel jar包并cmd运行

java -Dserver.port=8840 -Dcsp.sentinel.dashboard.server=localhost:8840 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.1.jar

3.修改yml配置

spring:
cloud:
sentinel:
transport:
port: 8719
dashboard: localhost:8840 # dashboard地址
client-ip: localhost # 本机地址,可以不填
1
2
3
4
5
6
7
4.访问 localhost:8840 用户名/密码为:sentinel
5.因为sentinel控制台是懒加载,需要先访问服务控制台才能加载出来。
6.加载出来后就可以对它进行管控

————————————————
版权声明:本文为CSDN博主「excellent_yb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/excellent_yb/article/details/116275441

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码将该XML实例转换为application/x-www-form-urlencoded格式的模型: ``` using System.Net.Http; using System.Text; using System.Xml; // 将XML实例转换为application/x-www-form-urlencoded模型 var xmlString = @"<OTA_InventoryCheckRQ EchoToken='487ef6b0-3526-45e3-81e7-0eac31754c10' Password='abc888888' PrimaryLangID='en-us' TimeStamp='2021-04-20 10:30:59' UserName='guowang' Version='1.000'> <POS> <Source> <RequestorID ID='elongID' Type='2'/> </Source> </POS> <HotelReservations> <HotelReservation> <RoomStay> <RoomTypes> <RoomType RoomTypeCode='5412309'/> </RoomTypes> <RatePlans> <RatePlan RatePlanCode='4674478'/> </RatePlans> <GuestCounts> <GuestCount AgeQualifyingCode='10' Count='2'/> <GuestCount AgeQualifyingCode='8' Count='0'/> </GuestCounts> <BasicPropertyInfo HotelCode='2525137'/> </RoomStay> <ResGlobalInfo> <RoomCount>10</RoomCount> <MemberLevel>V1</MemberLevel> <TimeSpan End='2021-04-30' Start='2021-04-29'/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_InventoryCheckRQ>"; var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); var formContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("Message", xmlDoc.OuterXml) }); var encodedString = formContent.ReadAsStringAsync().Result; Console.WriteLine(encodedString); ``` 输出结果为: ``` Message=%3COTA_InventoryCheckRQ%20EchoToken%3D%22487ef6b0-3526-45e3-81e7-0eac31754c10%22%20Password%3D%22abc888888%22%20PrimaryLangID%3D%22en-us%22%20TimeStamp%3D%222021-04-20%2010%3A30%3A59%22%20UserName%3D%22guowang%22%20Version%3D%221.000%22%3E%3CPOS%3E%3CSource%3E%3CRequestorID%20ID%3D%22elongID%22%20Type%3D%222%22%2F%3E%3C%2FSource%3E%3C%2FPOS%3E%3CHotelReservations%3E%3CHotelReservation%3E%3CRoomStay%3E%3CRoomTypes%3E%3CRoomType%20RoomTypeCode%3D%225412309%22%2F%3E%3C%2FRoomTypes%3E%3CRatePlans%3E%3CRatePlan%20RatePlanCode%3D%224674478%22%2F%3E%3C%2FRatePlans%3E%3CGuestCounts%3E%3CGuestCount%20AgeQualifyingCode%3D%2210%22%20Count%3D%222%22%2F%3E%3CGuestCount%20AgeQualifyingCode%3D%228%22%20Count%3D%220%22%2F%3E%3C%2FGuestCounts%3E%3CBasicPropertyInfo%20HotelCode%3D%222525137%22%2F%3E%3C%2FRoomStay%3E%3CResGlobalInfo%3E%3CRoomCount%3E10%3C%2FRoomCount%3E%3CMemberLevel%3EV1%3C%2FMemberLevel%3E%3CTimeSpan%20End%3D%222021-04-30%22%20Start%3D%222021-04-29%22%2F%3E%3C%2FResGlobalInfo%3E%3C%2FHotelReservation%3E%3C%2FHotelReservations%3E%3C%2FOTA_InventoryCheckRQ%3E ``` 其中,key为"Message",value为对该XML实例进行URL编码后的字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值