当前位置: 首页 > news >正文

个人网站设计说明网站建设公司哪家好速找盛世传媒

个人网站设计说明,网站建设公司哪家好速找盛世传媒,东莞做微信小程序的公司,完美一键优化思考1、当服务访问量达到一定程度#xff0c;流量扛不住的时候#xff0c;该如何处理#xff1f;2、服务之间相互依赖#xff0c;当服务A出现响应时间过长#xff0c;影响到服务B的响应#xff0c;进而产生连锁反应#xff0c;直至影响整个依赖链上的所有服务#xff0…思考1、当服务访问量达到一定程度流量扛不住的时候该如何处理2、服务之间相互依赖当服务A出现响应时间过长影响到服务B的响应进而产生连锁反应直至影响整个依赖链上的所有服务该如何处理这是分布式、微服务开发不可避免的问题。我们系统假如是这样的调用图。当G服务出现程序Bug大流量请求硬件故障缓存击穿时导致服务不可用。进而导致D服务不可用导致A服务不可用。 B、C、D三个服务共享A服务的线程池当D服务出现故障时则导致A服务中所有线程池都在等待D服务响应而被阻塞。进而导致A服务不可用解决方案超时机制在不做任何处理的情况下服务提供者不可用会导致消费者请求线程强制等待而造成系统资源耗尽。加入超时机制一旦超时就释放资源。由于释放资源速度较快一定程度上可以抑制资源耗尽的问题。服务限流(资源隔离)限制请求核心服务提供者的流量使大流量拦截在核心服务之外这样可以更好的保证核心服务提供者不出问题对于一些出问题的服务可以限制流量访问只分配固定线程资源访问这样能使整体的资源不至于被出问题的服务耗尽进而整个系统雪崩。那么服务之间怎么限流怎么资源隔离例如可以通过线程池队列的方式通过信号量的方式。当D服务出问题时A调用C服务和B服务不受影响。服务熔断远程服务不稳定或网络抖动时暂时关闭就叫服务熔断。服务降级有服务熔断必然要有服务降级。sentinel开源功能不足之点相信用过开源版本sentinel的小伙伴会发现当服务重新启动是sentinel控制台规则数据则失效接下里引入sentinel-datasource-nacos 规则持久化来解决sentinel规则失效问题。但是发现在sentinel的dashboard的客户端更改规则生效但是nacos中的配置未发生变更导致dashboard的和nacos的数据不一致现象。红色的箭头未实现就会导致dashboard配置的规则和nacos配置中的数据不一致。为了解决这个问题官方的建议是在dashboard源码中进行改造直接写入数据到nacos中。标红的部分所以实现dashboard和nacos中的数据规则一致则有两个方案 方案一 需要在应用服务端进行改造方案二 需要在dashboard的源码中进行改造官方推荐设计模式的核心理念逻辑之一开放封闭原则。选择方案一比较好点。我对方案一进行的实现。代码实现1.SpringContextHolder 工具类(为了能获取到配置中变量) Component public class SpringContextHolder implements ApplicationContextAware {private static ApplicationContext context;public static ApplicationContext getContext() {return context;}Overridepublic void setApplicationContext(ApplicationContext applicationContext) {context applicationContext;} }2. SentinelNacosProperties 实体类 public class SentinelNacosProperties {public String serverAddr;public String groupId;public String dataId;public String username;public String password;public String namespace;public String appName; //自己添加get/set方法 } 3.利用sentinel的扩展点InitFuncNacosDataSourceInitFunc Slf4j public class NacosDataSourceInitFunc implements InitFunc {Overridepublic void init() throws Exception {log.info(NacosDataSourceInitFunc init...);Environment env SpringContextHolder.getContext().getEnvironment();String appName env.getProperty(spring.application.name, demo-project);String groupId SENTINEL_GROUP;String serverAddr env.getProperty(spring.cloud.nacos.config.server-addr, localhost:8848);String namespace env.getProperty(spring.cloud.nacos.config.namespace, public);String username env.getProperty(spring.cloud.nacos.config.username, nacos);String password env.getProperty(spring.cloud.nacos.config.password, xx#pj70Qdd1);log.info(NacosDataSourceInitFunc appName:{}, group:{}, serverAddr:{}, appName, groupId, serverAddr);SentinelNacosProperties sentinelNacosProperties new SentinelNacosProperties();sentinelNacosProperties.setAppName(appName);sentinelNacosProperties.setGroupId(groupId);sentinelNacosProperties.setServerAddr(serverAddr);sentinelNacosProperties.setNamespace(namespace);sentinelNacosProperties.setUsername(username);sentinelNacosProperties.setPassword(password);// FlowRule 流控规则 String flowDataId appName -flow-rules;sentinelNacosProperties.setDataId(flowDataId);WritableDataSourceListFlowRule flowRuleWritableDataSource new NacosWritableDataSource(sentinelNacosProperties, JSON::toJSONString);WritableDataSourceRegistry.registerFlowDataSource(flowRuleWritableDataSource);// DegradeRule 降级规则 String degradeDataId appName -degrade-rules;sentinelNacosProperties.setDataId(degradeDataId);WritableDataSourceListDegradeRule degradeRuleWritableDataSource new NacosWritableDataSource(sentinelNacosProperties, JSON::toJSONString);WritableDataSourceRegistry.registerDegradeDataSource(degradeRuleWritableDataSource);// AuthorityRule 授权规则 String authorityDataId appName -authority-rules;sentinelNacosProperties.setDataId(authorityDataId);WritableDataSourceListAuthorityRule authorityRuleWritableDataSource new NacosWritableDataSource(sentinelNacosProperties, JSON::toJSONString);WritableDataSourceRegistry.registerAuthorityDataSource(authorityRuleWritableDataSource);// SystemRule 系统规则 String systemDataId appName -system-rules;sentinelNacosProperties.setDataId(systemDataId);WritableDataSourceListSystemRule systemRuleWritableDataSource new NacosWritableDataSource(sentinelNacosProperties, JSON::toJSONString);WritableDataSourceRegistry.registerSystemDataSource(systemRuleWritableDataSource);log.info(NacosDataSourceInitFunc init finished);} }由于sentinel的各个规则都可以在不同的nacos服务上根据自己的修改此配置。4. 写数据源的实现 import com.alibaba.csp.sentinel.datasource.Converter; import com.alibaba.csp.sentinel.datasource.WritableDataSource; import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.ConfigType; import com.alibaba.nacos.api.exception.NacosException; import org.springframework.beans.factory.annotation.Value;import java.util.Properties; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;/*** Sentinel nacos写数据源实现**/ public class NacosWritableDataSourceT implements WritableDataSourceT {private final String serverAddr;private final String groupId;private final String dataId;private final String username;private final String password;private final String namespace;private final Properties properties;private ConfigService configService;private final ConverterT, String configEncoder;private final Lock lock new ReentrantLock(true);public NacosWritableDataSource(SentinelNacosProperties nacosProperties, ConverterT, String configEncoder) {this.serverAddr nacosProperties.getServerAddr();this.namespace nacosProperties.getNamespace();this.groupId nacosProperties.getGroupId();this.dataId nacosProperties.getDataId();this.username nacosProperties.getUsername();this.password nacosProperties.getPassword();this.properties NacosWritableDataSource.buildProperties( nacosProperties);this.configEncoder configEncoder;initConfigService();}private void initConfigService() {try {this.configService NacosFactory.createConfigService(properties);} catch (NacosException e) {e.printStackTrace();}}private static Properties buildProperties(SentinelNacosProperties nacosProperties) {Properties properties new Properties();properties.setProperty(PropertyKeyConst.SERVER_ADDR, nacosProperties.getServerAddr());properties.setProperty(PropertyKeyConst.NAMESPACE, nacosProperties.getNamespace());properties.setProperty(PropertyKeyConst.USERNAME, nacosProperties.getUsername());properties.setProperty(PropertyKeyConst.PASSWORD, nacosProperties.getPassword());return properties;}Overridepublic void write(T t) throws Exception {lock.lock();try {configService.publishConfig(dataId, groupId, this.configEncoder.convert(t));} finally {lock.unlock();}}Overridepublic void close() throws Exception {}} 5. application.yml 规则定义 spring:cloud:sentinel:transport:dashboard: localhost:8080 # Sentinel 控制台地址port: 8719 # 本地启动的端口用于与 Sentinel 控制台通信eager: true # 是否立即初始化web-context-unify: false # 是否合并 Web 上下文datasource:flow-rules:nacos:server-addr: 127.0.0.1:8848dataId: ${spring.application.name}-flow-rulesgroupId: SENTINEL_GROUPdata-type: jsonrule-type: flowdegrade-rules:nacos:server-addr: 127.0.0.1:8848dataId: ${spring.application.name}-degrade-rulesgroupId: SENTINEL_GROUPdata-type: jsonrule-type: degradeparam-flow-rules:nacos:server-addr: 127.0.0.1:8848dataId: ${spring.application.name}-param-flow-rulesgroupId: SENTINEL_GROUPdata-type: jsonrule-type: param-flowauthority-rules:nacos:server-addr: 127.0.0.1:8848dataId: ${spring.application.name}-authority-rulesgroupId: SENTINEL_GROUPdata-type: jsonrule-type: authoritysystem-rules:nacos:server-addr: 127.0.0.1:8848dataId: ${spring.application.name}-system-rulesgroupId: SENTINEL_GROUPdata-type: jsonrule-type: system nacos的配置自己添加一下即可。 5.由于我们利用的sentinel的SPI机制需要以下的文件夹META-INF/services/com.alibaba.csp.sentinel.init.InitExecutor的类 将你的实现类按照图中存放即可。 测试nacos中流控规则中的阈值是33.dashboard的界面显示也是33.则代表nacos-服务内存-dashboard 这条链路已经走通。  现在我们在dashboard上进行修改阈值为55查看naocs是否同步修改 nacos中已经修改则代表方案一已实现。
http://www.pierceye.com/news/115169/

相关文章:

  • 个人网站logo需要备案吗鑫灵锐做网站多少钱
  • .xyz做网站怎么样网站产品预算
  • 建网站先要申请网址吗做网站给文件不侵权
  • 一元夺宝网站建设Wordpress 普通图片裁剪
  • 网站推广都有哪些自己有网站怎么优化
  • 宠物交易网站模板更改wordpress后台登录地址
  • 有电脑网站怎样建手机正规网络游戏平台
  • 网站抓取QQ获取系统cms监控手机客户端
  • 郑州网站推广价格优礼品网站模板
  • 百度指数不高的网站怎么优化网站图片类型
  • 北京专业做网站怎么样app软件开发摄像头
  • 网站建设导向erp系统软件免费版
  • 手表网站网站开发毕业设计文献综述
  • 台州网站制作维护关于微网站策划ppt怎么做
  • 网站建设中期目标开发app找那个公司
  • 跨境自建站模板网站内容和功能清单
  • 平面设计找素材的网站电子商务网站建设的步骤一般为(
  • 一个服务器可以备案几个网站凡科门店通怎么样
  • 房地产企业网站建设想给公司产品做个推广
  • 国外网站平台wordpress电脑安装教程
  • 网站开发合肥诚聘网站开发人员
  • 网站开发者模式怎么保存网站首页调用网站标题
  • 仿京东网站模板wordpress单页视差
  • php mysql 网站建设html5手机网站模板
  • 山楂树建站公司建筑方案设计说明模板
  • 服务器网站源码在哪建筑电工证
  • 网站导航国外做名片网站
  • 效益型网站西安移动网站建设
  • 爱站工具查询深一集团的网站谁做的
  • 为网站网站做推广制作本地网页