
1====>Java
文章平均质量分 93
xiongxianze
这个作者很懒,什么都没留下…
展开
-
API安全接口安全设计
转载自:API安全接口安全设计_zhou920786312的博客-CSDN博客_接口安全如何保证外网开放接口的安全性。使用加签名方式,防止数据篡改 信息加密与密钥管理 搭建OAuth2.0认证授权 使用令牌方式 搭建网关实现黑名单和白名单一令牌方式搭建搭建API开放平台方案设计:1第三方机构申请一个appId,通过appId去获取accessToken,每次请求获取accessToken都要把老的accessToken删掉2第三方机构请求数据需要加上accessTok...转载 2021-11-11 22:08:05 · 1220 阅读 · 0 评论 -
Java并发编程:并发容器之CopyOnWriteArrayList(转载)
CopyOnWrite容器CopyOnWriteArrayList和CopyOnWriteArraySet转载 2017-04-27 18:05:11 · 347 阅读 · 0 评论 -
巧用CAS解决数据一致性问题
缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法。一、业务场景业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下:(1)从数据库查询用户现有余额 SELECT money FROM t_yue WHERE uid=$uid,不妨设查询出来的$old_money=100元(2)业务层实施业务逻辑,比如购买一个80元的商品,...转载 2018-05-07 22:16:11 · 353 阅读 · 0 评论 -
简洁版rpc实现, 原理, 实例
时下很多企业应用更新换代到分布式,一篇文章了解什么是RPC。原作者梁飞,在此记录下他非常简洁的rpc实现思路。核心框架类/* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential and proprietary information of Alibaba.com ("Confi...转载 2018-05-27 23:24:35 · 371 阅读 · 0 评论 -
幂等
概念一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变.【注】很多人把他理解为“幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果”这个是不准确的。幂等性是系统的接口对外一种承诺(而不是实现), 承诺只要调用接口成...转载 2018-06-06 00:01:26 · 457 阅读 · 0 评论 -
从motan看RPC框架设计
kris的文章开始计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决从零开发一款RPC框架,说难也难说简单也简单。难的是你的设计将如何面对实际中的复杂应用场景;简单的是其思想可以仅仅浓缩成一行方法调用。motan是今年(2016年)新浪微博开源的一款RPC框架,据说在新浪微博正支撑着千亿次调用。对于她的详细介绍和赞誉是新闻稿和README的责任,本文则会从RPC的基本原理入手,分析和讲解...转载 2018-05-31 23:41:27 · 2272 阅读 · 0 评论 -
jdk SPI机制
什么是SPISPI(Service Provider Interface)服务提供接口,是指的一种服务发现机制,为某个特定的接口寻找服务的实现。在大规模的软件开发中经常采用这样的机制,实现模块之间基于接口编程,隐藏其实现细节,不同的服务提供商进行扩展实现,最终实现无需修改代码即可调用,实现完全无代码入侵。JDK自带的SPI实例JDK6以后提供了java.util.ServiceLoader类来实现...原创 2018-06-02 00:12:07 · 532 阅读 · 0 评论 -
Spring自定义标签
Spring通过XML解析程序将其解析为DOM树,通过NamespaceHandler指定对应的Namespace的BeanDefinitionParser将其转换成BeanDefinition。再通过Spring自身的功能对BeanDefinition实例化对象。在期间,Spring还会加载两项资料:META-INF/spring.handlers 指定NamespaceHandler(实现or...原创 2018-06-02 01:56:29 · 444 阅读 · 0 评论 -
分布式任务调度平台XXL-JOB--源码解析一:项目介绍
1.1 概述XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。1.2 特性1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效; 3、调度中心HA(中心式):调度采用中心式设计,“调度中...原创 2018-11-18 21:02:25 · 881 阅读 · 0 评论 -
spring—容器启动载入bean过程
spring—容器启动载入bean过程 此篇我们分析spring启动过程中代码大体的执行逻辑,在此,我们采用工程类的基类来进行分析,即对于以下几行代码执行过程中,spring后台所进行的处理。客户端代码: ClassPathResource res = new ClassPathResource("applicationContext.xml");//第一行 Defau转载 2017-05-02 10:20:46 · 1441 阅读 · 0 评论 -
理解HTTP协议
对http协议的解释翻译 2016-11-27 23:46:49 · 353 阅读 · 0 评论 -
Apache和tomcat的区别与联系
Apache与tomcat转载 2016-11-28 17:25:16 · 515 阅读 · 0 评论 -
spring aop思想提出的动机
业务场景:监控某些类中重要函数的执行时间,并以短信的方式通知相关人员。该怎样实现呢?或许有的朋友会说,很简单嘛。直接在方法体内添加发送短信的代码就ok了。但是,如果需要监控的重要函数很多呢?那是不是得在每个重要函数里都手动添加上发送短信的代码呢?再就是,需求变了,要把发送短信改成发送邮件呢?那该怎么办?如果这时,监控的目标函数也发生了变化该怎么办呢?所以将代码写死,不是原创 2017-03-28 18:19:59 · 454 阅读 · 0 评论 -
使用dubbo的main方法启动服务
在pom.xml中添加如下内容:与dependences同级别,服务段打成jar包 edu-service-user ${project.build.directory}/classes src/main/resources true **/*.xml **/*.properties ${project原创 2017-03-17 09:12:22 · 6235 阅读 · 0 评论 -
maven工程的继承和聚合
maven工程的继承和聚合原创 2016-12-23 10:26:22 · 449 阅读 · 0 评论 -
Spring依赖注入,在main方法或junit测试类里获取得Spring容器
获取spring实例原创 2016-12-08 16:39:54 · 6594 阅读 · 0 评论 -
工作流中的子流程
工作流的子流程原创 2016-12-06 17:05:12 · 4400 阅读 · 0 评论 -
git的基本使用
git基本命令原创 2016-12-06 13:15:56 · 704 阅读 · 0 评论 -
使用github来提交代码
git使用原创 2016-12-06 09:03:26 · 417 阅读 · 0 评论 -
理解WEB项目中的路径问题
在web中,页面路径主要有一下几种:1.请求重定向2.浏览器的请求被服务器请求到新页面(我称为“转发”)3.超链接4.form表单提交的action为了演示路径写法,首先先建一个项目(项目名WebPath),并建立一个servlet(PathServlet)目录结构如下:转载 2016-12-02 10:38:17 · 799 阅读 · 0 评论 -
mysql jdbc 连接数据库
//加载驱动Class.forName("com.mysql.jdbc.Driver");//连接数据库Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/taotao", "root", "123456");//获取statement对象Statement sql = conn.原创 2017-03-31 11:28:52 · 328 阅读 · 0 评论 -
分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和executor执行器运行部署环境
一, 搭建admin调度中心1.1 安装docker运行环境采用yum源安装直接安装:yum install -y docker启动docker: service docker start停止docker:service docker stop1.2 拉取tomcat和mysql这两个docker镜像这里使用网易公有镜像库, 访问: https://c.163yun.com...原创 2018-11-19 00:05:22 · 5970 阅读 · 3 评论 -
分布式任务调度平台XXL-JOB--源码解析四:xxl-job-admin调度中心源码解析之job调度过程,调度策略以及rpc通信
admin调度中心的对于job的调度过程, 调度策略以及rpc通信1.1 job调度过程RemoteHttpJobBean类实现了QuartzJobBean, 当cron时间片到达时, 就会触发一次quartz调用, 回调executeInternal()方法, 而XxlJobTrigger.trigger(jobId)具体实现细节就是进行了一次网络请求.// 当cron时间片到时,...原创 2018-11-21 02:33:23 · 3031 阅读 · 0 评论 -
Sentinel基本使用--基于QPS流量控制(一), 采用默认快速失败/直接拒绝策略控制超过阈值的流量(结合Dashboard使用)
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制框架,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。流量控制有以下几个角度:资源的调用关系,例如资源的调用链路,资源和资源之间的关系; 运行指标,例如 QPS、线程池、系统负载等; 控制的效果,例如直接限流、冷启动、排队等。Sent...原创 2019-02-18 22:44:07 · 10281 阅读 · 1 评论 -
Sentinel基本使用--基于QPS流量控制(二), 采用Warm Up预热/冷启动方式控制突增流量
一, Warm UpSentinel的Warm Up(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式,即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。warm up冷启动主要用于启动需要额...原创 2019-02-18 23:52:37 · 5350 阅读 · 3 评论 -
Sentinel基本使用--基于QPS流量控制(三), 匀速排队Rate Limiter流量控制
一, Sentinel匀速器Rate Limiter模式流量控制某瞬时来了大流量的请求, 而如果此时要处理所有请求,很可能会导致系统负载过高,影响稳定性。但其实可能后面几秒之内都没有消息投递,若直接把多余的消息丢掉则没有充分利用系统处理消息的能力。Sentinel的Rate Limiter模式能在某一段时间间隔内以匀速方式处理这样的请求, 充分利用系统的处理能力, 也就是削峰填谷, 保证资源的...原创 2019-02-19 22:37:37 · 5826 阅读 · 1 评论 -
扩展dubbo的filter接口实现链路信息上报给zipkin
一, 链路追踪的意义一个分布式的系统, 由后台多个服务组成, 而一次请求会涉及到调用许多服务, 各服务又是分布式部署在各个节点, 这样对出了问题定位问题, 线上问题的处理是非常复杂, 费劲的. 通过分布式链路追踪可以很好的定位一次请求的调用链, 服务调用的流程信息, 服务响应时间, 服务的执行时间, 服务是否超时等.比较好的一些分布式链路追踪框架有, zipkin, 美团点评的cat, s...原创 2019-02-13 23:54:48 · 917 阅读 · 0 评论 -
hystrix结合dubbo框架实现服务熔断降级, 保证后台服务稳定性
一, 服务稳定性以及熔断降级的意义需求的多样性, 业务的复杂程度也是不断上升的, 一个接口依赖的服务也会逐步增加, 各个服务的稳定性是需要着重考虑的; 例如一个电商订单场景, 不能因为评论服务异常超时, 而阻止用户浏览该商品的其他信息, 同样的也不能因为用户优惠券服务等这些非核心服务(弱依赖), 异常超时从而阻止用户下订单; 但是网络环境又是不可控的, 有可能在某一段时间内, 由于网络抖动, ...原创 2019-02-14 23:52:34 · 9821 阅读 · 1 评论 -
Sentinel基本使用--基于Thread并发线程数流量控制
一, Sentinel基于并发线程数流控采用基于线程数的限流模式后,我们不需要再显式地去进行线程池隔离,Sentinel 会控制访问该资源的线程数,超出的请求直接拒绝,直到堆积的线程处理完成。相当于是以资源为维度, 隔离出了每一种资源对应的不同线程数.例如,当应用所依赖的下游应用由于某种原因导致服务不稳定、响应延迟增加,对于调用者来说,意味着吞吐量下降和更多的线程数占用,极端情况下甚至导致...原创 2019-02-20 00:19:44 · 5809 阅读 · 1 评论 -
Sentinel基本使用--熔断降级(基于RT, ExceptionRatio, ExceptionCount)
一, Sentinel熔断降级Sentinel除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后...原创 2019-02-20 23:17:50 · 23370 阅读 · 0 评论 -
Sentinel结合dubbo实现服务流控, 熔断降级, 保证服务高可用
一, Service Provider对外界提供服务,基于QPS模式限流Service Provider用于对外提供服务, 处理各个消费者的调用请求。为了保护自己作为Provider端的服务不被激增的流量拖垮影响稳定性,可以给 Provider 配置 QPS 模式的限流,这样当每秒的请求量超过设定的阈值时会自动拒绝多的请求。Sentinel的限流粒度可以是 服务接口 和 服务方法 两种粒度...原创 2019-02-21 23:42:54 · 5860 阅读 · 0 评论 -
Sentinel VS Hystrix技术选型
一, Sentinel VS HystrixSentinel 项目地址:https://github.com/alibaba/SentinelHystrix项目地址:https://github.com/Netflix/Hystrix二、总体说明先来看一下 Hystrix 的官方介绍:Hystrix is a library that helps you contro...转载 2019-02-17 23:40:11 · 2027 阅读 · 0 评论 -
Fescar分布式事务框架--结合dubbo解决微服务下的分布式事务问题
一, FescarFescar是阿里巴巴开源的分布式事务中间件,以高效并且对业务0侵入的方式,解决微服务场景下面临的分布式事务问题。二, 下载源码, 并导入IDE源码下载可以看到, fescar对dubbo的分布式事务支持, 其实是扩展dubbo的filter接口实现的.fescar-examples分为三个后台服务,一个服务调用者① StorageService商品库...原创 2019-02-16 22:40:49 · 1418 阅读 · 0 评论 -
分布式任务调度平台XXL-JOB--源码解析五:executor执行器源码解析之初始化工作
executor执行器初始化工作1.1 初始化工作这里我们使用xxl-job自带的xxl-job-executor-sample-spring作为本次源码解析的executor执行器端, 则executor执行器启动时, Spring容器会初始化XxlJobExecutor, 并调用init-method = start()方法.1.2 XxlJobExecutor类的start(...原创 2018-11-21 23:52:41 · 5100 阅读 · 0 评论 -
分布式任务调度平台XXL-JOB--源码解析六:executor执行器源码解析之启动jetty服务接受请求并执行调度
启动jetty服务并执行调度1.1 启动一个jetty server服务 首先加载ServerConnector, 加载HandlerCollection并设置handlers, 其中connector负责接受客户端http请求, 而handlers负责处理客户端请求, 最后就是调用start()方法启动jetty服务.1.2 负责处理admin调度中心请求的JettySer...原创 2018-11-22 00:58:28 · 1379 阅读 · 2 评论 -
轻量级Rpc框架设计--motan源码解析一:框架介绍及框架使用初体验
一, 框架介绍1.1 概况 motan是新浪微博开源出来的一套高性能、易于使用的分布式远程服务调用(RPC)框架。1.2 功能可以spring的配置方式与项目集成.支持zookeeper服务发现组件, 实现集群环境下服务注册与发现.保证高并发, 高负载场景下的稳定高性能, , 实现生产环境下的RPC服务的高可用性.二, Hello World本次hello worl...原创 2018-12-11 00:39:22 · 976 阅读 · 0 评论 -
轻量级Rpc框架设计--motan源码解析二:自定义spring标签与解析
一, 如何自定义标签可参考以前本人针对spring自定义标签写过的一篇博客, Spring自定义标签, 其实原理就是利用spring在初始化的过程中会加载META-INF/spring.handlers, META-INF/spring.schemes这两项文件, 再通过继承NamespaceHandlerSupport类, 并且自定义一个实现类实现BeanDefinitionParser接...原创 2018-12-11 23:53:53 · 476 阅读 · 0 评论 -
轻量级Rpc框架设计--motan源码解析三:服务暴露前的初始化检查工作
一, 服务暴露前的初始化工作1.1 实现InitializingBean接口motan通过实现InitializingBean接口, 实现afterPropertiesSet()方法, 完成服务暴露前的三项初始化工作:①checkAndConfigBasicConfig(); // 检查并配置basicConfig②checkAndConfigExport(); //检查是否已经装...原创 2018-12-13 23:57:16 · 436 阅读 · 0 评论 -
轻量级Rpc框架设计--motan源码解析四:Netty服务暴露
一, 服务暴露motan框架通过实现ApplicationListener<ContextRefreshedEvent>接口的onApplicationEvent()方法, 执行服务暴露操作.@Override public void onApplicationEvent(ContextRefreshedEvent event) { // 首先检查, 是否已...原创 2018-12-14 23:52:11 · 654 阅读 · 0 评论 -
轻量级Rpc框架设计--motan源码解析五:Zookeeper注册服务
前言, motan框架向注册中心进行服务注册这部分源码实现, 大量使用了模板方法模式, 对于模板方法模式的学习, 可参考: 模板方法模式一, Zookeeper注册服务public <T> Exporter<T> export(Class<T> interfaceClass, T ref, List<URL> registryUrls) {...原创 2018-12-15 23:23:15 · 456 阅读 · 0 评论