`
征途2010
  • 浏览: 243306 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
在线网站一般都会有服务器压力剧增的时候,比如说网上商城的促销,这个时候常用的手段就是服务降级,根据当前业务情况及流量对一些服务和页面有策略的降级,以此缓解了服务器资源压力,以保证核心任务的正常运行,同时也保证了部分甚至大部分客户得到正确响应。 服务降级实施策略 页面拒绝服务:页面提示由于服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。 服务接口拒绝服务:无用户特定信息的页面能访问,提示服务器繁忙。页面内容也可在缓存(Varnish)或CDN内获取。 延迟持久化:页面访问照常,但是涉及记录变更,会提示稍晚能看到结果,将数据记录到异步队列或log,服务恢复后执行。 ...
上一章介绍了disconf的安装预配置,这章主要介绍下disconf与spring集成 1、添加依赖   <dependency> <groupId>com.baidu.disconf</groupId> <artifactId>disconf-client</artifactId> <version>2.6.36</version> </dependency>     2、修改配置文件 ...
一、背景     在生产部署过程中,遇到以下问题: 1、由于节点较多,每次增量修改配置文件后都需要每个节点替换配置文件。 2、有些动态配置修改后,需要重启服务。 二、解决方案 1、使用linux文件共享配置文件来实现,但是这个需要解决配置的权限分配问题,操作起来比较麻烦,并且无法解决问题2。 2、使用中间件来解决配置加载问题,由于我们服务已经使用了dubbo,所以最后采用了百度的disconf来实现动态配置加载。 三、实现 安装依赖 安装Mysql 安装Tomcat(apache-tomcat-7)安装Nginx(nginx/1.10.2)(安装nginx ...
下面说一下分布式实现的几种方式: 一、数据库悲观锁  所谓的悲观锁:顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次拿数据的时候都会上锁。这样别人拿数据的时候就要等待直到锁的释放。 这里是采用oracle的 select  ......  where id=1 for update 来实现分布式锁,建议加上nowait,或者wait 以及 of 下面是demo:   select * from table where id=1 for update nowait;//当锁被占用,不等待直接报错 select * from table where id=1 for ...
由于工作需要,将原有的nexus2.x升级为nexus3.x,升级后创建仓库是非常方便,但是该如何将本地的jar上传到maven仓库呢?这个博主就像无头的苍蝇找了好久,才终于找到解决方案。下面描述下该怎么上传本地jar到nexus。 1、首先需 ...
在进行dubbo开发中遇到一个问题,当是用hession2进行序列化时,子类和父类有相同的字段时,hession2反序列化获取不到该字段数据,如下: import java.io.Serializable; import java.util.Date; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String userId; private String userName; ...
公司使用jenkins来作为持续构建工具,由于要进行自动化构建、编译、代码走查、打包。今天介绍下 jenkins集成findbugs的经验。 1、首先进入jenkins插件管理页面,下载途中的findbugs插件  2、新建一个maven项目,就以findbugs-scan为例  3、然后在“源码管理”页签上填写代码库相关信息   4、在“构建环境”页签中填写构建命令 clean compile -Dmaven.test.skip=true  findbugs:findbugs site 如果不加site命令,则不会在jenkins生成报告  5、填写构建后操作,比如说发送 ...
dubbo提供了好几种序列化方式,一般我们都是用的是默认的hession2,而dubbox为我们增加了kryo和fst许了方式,主要体现在速度快,占用内存小,然后我们将序列化配置改为是用kryo: <dubbo:protocol name="dubbo" serialization="kryo"/>     但是是用一段时间后遇到了不少问题,其中最困扰人的是不兼容以前的版本,我们的需求变动频繁,并且迭代比较快,经常需要增加字段或者对类进行重构,这就导致dubbo反序列化时经常报如下错误:     ERROR] [2017- ...
dubbo是一个分布式服务框架,在国内比较常用,在开发过程中遇到一个浮点数反序列化问题。 问题描述,当参数是float类型的3.7,反序列化却得到了一个double类型的值:3.700000047683716。 然后,我写了个测试程序:   import java.i ...
我们经常碰到一些定时任务卡死或者执行时间很长,这样的问题我们排查手段比较常用的是jstack命令 来查看线程堆栈,然后根据我们监控中的threadId或者threadName来查找线程详细堆栈看卡在哪个方法。 常用命令如下: jstack pid >jstack.log 现在我们可以提供界面查看卡死线程堆栈 controller代码   @RequestMapping("/getStackTrace") @ResponseBody public String getStackStace(HttpServletRequest request, Ht ...
我们在使用mybatis开发过程中,经常需要打印sql以及输入输出,下面说一下mybatis结合log4j打印sql的。 1、添加mybatis配置 mybatis的日志打印方式比较多,SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根据自 ...
spring与druid可以实现动态数据源,夸库查询,读写分离等功能。现在说一下配置: 1、需要配置多个spring数据源 spring-data.xml <!-- 动态数据源 --> <bean id="dynamicDataSource" class="com.myproject.common.db.util.DynamicDataSource&q ...
在quartz中经常会碰到由于网络问题或者一些其他不稳定因素导致的线程卡死问题,这往往会导致数据处理的延时。而有时候一时无法定位到卡死的原因,为了降低系统风险,我们就会希望有一个超时机制,当执行超时时强制中断该操作。下面就举个例子,ftp协议不稳定,当连接ftp上传下载数据时有时候会遇到不可知的因素会导致卡死,比如说主动被动切换,服务器连接数满等等,现在我们使用java提供的动态代理以及Future的超时机制来解决延时问题。代码如下: public class FtpClientProxy implements InvocationHandler { private stati ...
由于quartz单节点无法满足业务的需求,后面我们在单节点的基础上进行了集群部署。 由以前的定时任务信息放在jobs.xml配置文件中,转而放到数据库中。 1、新建数据库表   CREATE TABLE qrtz_job_details ( SCHED_NAME VARCHAR2(120) NOT NULL, JOB_NAME VARCHAR2(200) NOT NULL, JOB_GROUP VARCHAR2(200) NOT NULL, DESCRIPTION VARCHAR2(250) NULL, JOB_CLASS_N ...
在quartz进行集群部署时,由于为了确保文件一致性,所以就得实现多机共享一个本地目录,这里就得用到linux的挂载,下面简单介绍下操作步骤。 机器准备机器准备10.10.4.9(原有节点)、10.10.4.8、10.10.4.7,都需要root用户。   ...
Global site tag (gtag.js) - Google Analytics