09 2018 档案
摘要:风险管理计划描述的是在项目中如何组织和执行风险管理,作为项目管理计划的一部分,它包含以下部分: ①方法论。 ②角色和职责。 ③预算。 ④制订时间表。 ⑤风险类别。 ⑥风险概率和影响力的定义。 ⑦概率及影响矩阵。 ⑧已修订的项目干系人对风险的容忍度。 ⑨报告的格式。 ⑩跟踪。 风险管理计划内容:htt
阅读全文
摘要:4个问答题:1. 谈谈你对项目经理岗位的理解。项目管理分为哪些阶段?项目经理在各阶段中的工作重心分别是什么?2. 假如你负责的项目本周末必须上线,但按照目前实际的紧张无法按时完成,此时你会做些什么?3. 如果一个项目成员工作效率不高,经常无法达到deadline,作为项目经理你会怎么做?4. 你会如
阅读全文
摘要:大家都知道工作要抓重点,抓住了重点事半功倍。那在项目各阶段,项目经理的工作重点是什么? 一.启动阶段 1.识别和分析重要的项目干系人,确定项目的沟通策略。2.让客户认可你。项目经理要尽快得到客户的认可,客户认可了你这个人,后面的工作就好开展了。3.争取客户对项目的大力支持。没有客户的支持,项目实施寸
阅读全文
摘要:1 你认为项目中最重要的是哪些过程?分析、设计阶段(也可以加上测试,但千万别说编码或开发阶段),根据《人月神话》的观点:1/3 计划;1/6 编码;1/4 构件测试和早期系统测试;1/4 系统测试,所有的构件已完成。但根据国内目前的状况一般公司不会有很多的分析与设计时间(这取决于公司规模和时间成本)
阅读全文
摘要:需求管理不是范围管理,他们之间的差别从各自的定义和所包括的过程就可以知道:范围管理包含一系列子过程,用以确保项目包含且只包含达到项目成功所必须完成的工作,范围管理主要关注项目内容的定义和控制,即包括什么,不包括什么而需求管理是确保各方对需求的一致理解,管理和控制需求的变更,以及需求的跟踪。所以需求开
阅读全文
摘要:(1)合同风险 预防这种风险的办法是项目建设之初项目经理就需要全面准确地了解合同各条款的内容、尽早和合同各方就模糊或不明确的条款签订补充协议。 (2)需求变更风险 预防这种风险的办法是项目建设之初就和用户书面约定好需求变更控制流程、记录并归档用户的需求变更申请。 (3)沟通不良风险 预防这种风险的办
阅读全文
摘要:在接下来的叙述里我首先会说明happens-before规则是干什么用的,然后用一个简单的小程序说明happens-before规则 一、happens-before规则 我们编写的程序都要经过优化后(编译器和处理器会对我们的程序进行优化以提高运行效率)才会被运行,优化分为很多种,其中有一种优化叫做
阅读全文
摘要:网关服务是单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的路由转发、过滤和公共处理等。 在微服务实践中远不止这点功能,它可以做到统一接入、流量管控、安全防护、业务隔离等功能。 下面是服务网关的大概作用图。 看完这张图,或许你已经明白了服务网关的作用,及使用服务网关带来的诸多好处。 所以,
阅读全文
摘要:在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。 25.尽量避免大事务操作,提高系统并发能力。26.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
阅读全文
摘要:流程执行命令: 1.top 查到pid 28555 2.ps aux|grep 28555 确定到是tomcat的进程 3.显示线程列表 ps -mp 28555 -o THREAD,tid,time 查到tid 28802 4. printf "%x\n" 28802 将线程id,tid进行16进
阅读全文
摘要:功能问题,通过日志,单步调试相对比较好定位。 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。 58到家架构部,运维部,58速运技术部联合进行了一次线上服务CPU问题排查实战演练,同学们反馈有收获,特将实战演练的试题和答案公布出来,希望对大家也有帮助。
阅读全文
摘要:Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,对单线程的程序说并不会有
阅读全文
摘要:关键字约定 Young generation –>新生代 Tenured / Old Generation –>老年代 Perm Area –>永久代 年轻代: 所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代分三个区。一个Eden区,两个 Sur
阅读全文
摘要:1.jps -lvm 查出pid 2.jstack pid >1.dump 3.grep java.lang.Thread.State 1.dump| awk '{print $2$3$4$5}' | sort | uniq -c
阅读全文
摘要:jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 暂停,S
阅读全文
摘要:目录 一、java线程状态 二、使用jstack生成进程dump文件 三、统计dump文件中处于不同状态的线程数量 四、举例分析不同状态的线程 1、分析BLOCKED (on object monitor)状态的线程 2、分析TIMED_WAITING (on object monitor)和WAI
阅读全文
摘要:内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间。 一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但
阅读全文
摘要:1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
阅读全文
摘要:Zookeeper简介 在上班之前都不知道有这样一个东西,在开始说假死脑裂之前先说说Zookeeper吧。 Zookeeper zookeeper是一个分布式应用程序的协调服务。它是一个为分布式应用提供一致性服务的软件,提供的性能包括:配置维护、名字服务、分布式同步、组服务等。 zookeeper是
阅读全文
摘要:在使用zookeeper的过程中,我们经常会看到这样一些说法: 1.zookeeper cluster的节点数目必须是奇数。 2.zookeeper 集群中必须超过半数节点(Majority)可用,整个集群才能对外可用。 这个说法在大多数情况下是正确的。 实际上ZooKeeper提供了几种方式来认定
阅读全文
摘要:回到顶部 一、多版本的支持 如何发布服务,需要将需要暴露的服务接口发布出去供客户端调用,需要在java同级目录新建一个resources目录,然后将resoureces目录标记成Test Resoureces Root,然后在esources目录下新建MATE-INF.spring目录,在该目录下添
阅读全文
摘要:dubbo降级服务 dubbo开发中,通常是微服务架构,那么在使用过程中可能会遇到多种问题: 1)多个服务之间可能由于服务没有启动或者网络不通,调用中会出现远程调用失败; 2) 服务请求过大,需要停止部分服务以保证核心业务的正常运行; 以上两个问题可以使用Dubbo的服务降级来实现; 即:在服务宕掉
阅读全文
摘要:一、消息为什么丢失 RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了。原因在于每个队列和交换机的durable属性。该属性默认情况是false,它决定了RabbitMQ是否需要在崩溃或
阅读全文
摘要:springmvc的controller是singleton的(非线程安全的),这也许就是他和struts2的区别吧!和Struts一样,Spring的Controller默认是Singleton的,这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:一是我们
阅读全文
摘要:1、AOP术语 1)连接点(Joinpoint) 程序执行的某个特定位置:如类开始初始化前、类初始化后、类某个方法调用前、调用后、方法抛出异常后。一个类或一段程序代码拥有一些具有边界性质的特定点,这些点中的特定点就称为“连接点”。Spring仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛
阅读全文
摘要:对请求的目标URL进行限流(例如:某个URL每分钟只允许调用多少次) 对客户端的访问IP进行限流(例如:某个IP每分钟只允许请求多少次) 对某些特定用户或者用户组进行限流(例如:非VIP用户限制每分钟只允许调用100次某个API等) 多维度混合的限流。此时,就需要实现一些限流规则的编排机制。与、或、
阅读全文
摘要:简述 Spring Cloud Zuul RateLimit项目Github地址: https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit 该包实现了在Zuul对每个服务进行限流。提供的几种限流方式: 1. 认证用户(Authenti
阅读全文
摘要:高并发系统下, 有三把利器 缓存 降级 限流. 缓存: 将常用数据缓存起来, 减少数据库或者磁盘IO 降级: 保护核心系统, 降低非核心业务请求响应 限流: 在某一个时间窗口内对请求进行限速, 保护系统 本文主要介绍限流, 常见限流算法中又分为计数器算法, 漏桶算法, 令牌桶算法. 计数器算法 比较
阅读全文
摘要:背景 本文基于Spring-Cloud, Daltson SR4 微服务一般多实例部署,在发布的时候,我们要做到无感知发布;微服务调用总会通过Ribbon,同时里面会实现一些重试的机制,相关配置是: 1 2 3 4 在发布时,为了适应Eureka注册中心的注册信息变换(参考Eureka上线下线解析)
阅读全文
摘要:在spring cloud体系项目中,引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试。 今天就来分别分析一下 FeignClient 和 Ribbon 重试机制的实现原理和区别,主要分为三点: 1)FeignClient重试机制分析 2)Ribbon重试机制分
阅读全文
摘要:Ribbon负载均衡策略 配置 对调用的某个服务启用某种负载策略 1)通过配置文件配置 1 2 3 2)通过java注解配置 1 2 3 4 5 6 7 8 通过注解@RibbonClient为特定的服务配置负载均衡策略 1 2 3 4 以上配置都是在服务消费者中配置。 单独使用Ribbon 因为往
阅读全文
摘要:/// <summary> /// 发送SOAP请求,并返回响应xml /// </summary> /// <param name="url">请求地址</param> /// <param name="datastr">SOAP请求信息</param> /// <returns>返回响应信息</
阅读全文
摘要:SpringCloud重试retry是一个很赞的功能,能够有效的处理单点故障的问题。主要功能是当请求一个服务的某个实例时,譬如你的User服务启动了2个,它们都在eureka里注册了,那么正常情况下当请求User服务时,ribbon默认会轮询这两个实例。此时如果其中一个实例故障了,发生了宕机或者超时
阅读全文
摘要:Ribbon负载均衡策略 配置 对调用的某个服务启用某种负载策略 1)通过配置文件配置 1 2 3 2)通过java注解配置 1 2 3 4 5 6 7 8 通过注解@RibbonClient为特定的服务配置负载均衡策略 1 2 3 4 以上配置都是在服务消费者中配置。 单独使用Ribbon 因为往
阅读全文
摘要://自定义重试次数// @Bean// public Retryer feignRetryer(){// Retryer retryer = new Retryer.Default(100, 1000, 2);// return retryer;// }如果设置了feginclient的重试次数(2
阅读全文
摘要:Spring 中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean 即 FactoryBean。FactoryBean跟普通Bean不同,其返回的对象不是指定类的一个实例,而是该FactoryBean的getObject方法所返回的对象。 本文简单分析工厂FactoryBean的用法。
阅读全文
摘要:BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。 ApplicationContext接口,它由BeanFactory接口派生而
阅读全文
摘要:一、代理的概念 动态代理技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会动态代理技术,那么在学习Spring这些框架时是学不明白的。 动态代理技术就是用来产生一个对象的代理对象的。在开发中为什么需要为一个对象产生代理对象呢? 举一个现实生活中的例子:歌星或者明星都有一个自己
阅读全文
摘要:前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码解析-zookeeper连接中已经讲到,这周解析的是另一道,即服务提供者能实现失效踢出是根据什么原理
阅读全文
摘要:dubbo客户端和dubbo服务端之间存在心跳,由dubbo客户端主动发起,可参见dubbo源码 HeartbeatTask。 dubbo服务端和注册中心(zk)存在心跳,由dubbo服务端发起,这是基于zk集群和zk客户端之间的心跳机制。 服务端和zk之间的心跳是zkclient维护的,dubbo
阅读全文
摘要:事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度。 但如果事件处理逻辑较慢,或者需要发起新的IO请求,比如需要查询数据库,则必须派发到线程池,否则IO线程阻塞,将导致不能接收其它请求。 如果用IO线程
阅读全文
摘要:切换到zookeeper的bin目录下,执行 ./zkServer.sh start
阅读全文
摘要:深入理解Eureka - Eureka Client获取注册信息机 深入理解Eureka - Eureka Client获取注册信息机 Eureka Client提供了定时获取注册信息的机制。Eureka Client获取注册信息的所有逻辑都在DiscoveryClient类里。 Eureka在初始
阅读全文
摘要:前言 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 1、简介 ZooKeep
阅读全文
摘要:Eureka包含四个部分的配置 Eureka Instance实例信息配置 Eureka Instance的配置信息全部保存在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean配置类里,实际上它是com.netflix.
阅读全文
摘要:一、什么情况下会触发fallback方法? 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执行开始,但没有在允许的时间内完成 YES BAD_REQUEST 执行抛出HystrixBadReq
阅读全文
摘要:1.注解配置 2.启动类配置 3.属性配置 4.设置resttemplate的超时时间(这个超时时间不知道是否与熔断有关)
阅读全文
摘要:eureka: client: register-with-eureka: true serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8765 spring: application: name: gateway-zuul zuul: retryabl...
阅读全文
摘要:Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。 service-hi: ribbon: ReadTimeout: 2000 Co
阅读全文
摘要:package com.example.demo; import com.netflix.hystrix.HystrixCommand; //import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import com.netflix.hystrix.HystrixCommandGroupKey; impor...
阅读全文
摘要:序 feign默认集成了hystrix,那么问题来了,如何像hystrix command那样设置每个方法的hystrix属性呢。 实例 FeignClientsConfiguration spring-cloud-netflix-core-1.2.6.RELEASE-sources.jar!/or
阅读全文
摘要:1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
阅读全文
摘要:Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。 hystrix: command: default: execution: ti
阅读全文
摘要:SpringCloud重试机制配置 首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例。 ? 1 2 3 4 5 6 7 8 @Bean @LoadBalanced RestTemplate restTemplate() { HttpCompo
阅读全文
摘要:Spring Cloud实现心跳监测,在服务注册和停止时,注册中心能得到通知,并更新服务实例列表 Spring Cloud注册中心添加配置: eureka.server.enable-self-preservation=false Spring Cloud服务提供者添加配置: eureka.inst
阅读全文
摘要:package com.example.demo; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty; import org.springframework.we...
阅读全文
摘要:一、缓存雪崩 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。
阅读全文
摘要:异步通讯对于服务端响应时间较长的方法是必须的,能够有效地利用客户端的资源,在dubbo中,消费端<dubbp:method>通过 async="true"标识。 <dubbo:reference id="xxx" ....> <dubbo:method name="method1" async="t
阅读全文