自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王启军

有人给你答案,但是没人代替你思考。

  • 博客(37)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 spring-cloud-huawei:在SpringCloud中使用ServiceComb的能力

Apache ServiceComb是什么?无论是 SOA,还是微服务架构;无论是平台化,还是中台战略,有一条原则始终都没有变过,那就是抽象,将公共的能力抽象出来,将最核心的研发人员投入到公共的服务、框架中,做到最稳定,以此来降低业务服务的复杂度,未来的趋势一定是,平台越来越厚重,业务越来越轻量级。微服务框架ServiceComb就是为此而生,将服务之间的通信、注册发现、服务治理、负载均...

2019-09-26 09:14:46 4314

原创 Spring Cloud的扩展之道

框架的扩展方式作为框架,使用者众多,无法满足所有的需求,那只能提供一些扩展机制,让使用者变成开发者,实现自己的个性化需求。这也是很多开源框架的优势。那么,作为开发者,如果不能满足要求,如何扩展呢?最简单的方式肯定是直接修改源代码,如果源码实现的比较好,定义了接口,可以直接基于接口实现。这种做法比较简单,只要读懂源码即可,问题是主干一旦升级,修改起来没有那么方便。就像各个厂商对An...

2019-03-25 11:47:41 1673

原创 分布式事务实现方案阿里巴巴fescar、华为servicecomb-pack对比分析

概述由于微服务架构大行其道,分布式通信几何级增加,必然带来一致性问题,也就是说,以前你遇到不一致的概率可能是100年1次,现在可能是1年1次,甚至1天1次。微服务架构的前期,大多数开发者只关注拆分,选择性忽略一致性、性能、可用性、工具链等问题,导致架构步履维艰,在这些问题当中,一致性是最容易被忽略的。当然,绝大多数场景并不需要那么高的一致性,可以采用失败重试的策略简单处理。 从目前业界的情况来...

2019-03-19 08:45:13 3664

原创 一个轻量级的容错库—Resilience4j,Hystrix的替代品,断路器、限流、隔离舱、重试、缓存全部搞定。

Netflix宣布停止开发Hystrix,建议使用Resilience4j,Resilience4j到底是什么鬼?Resilience4j最新版本为0.13.2,无论是案例还是活跃度,都不及Hystrix,带着这些疑问,让我们来了解一下Resilience4j。首先,我先简单对比一下二者。 实际上Resilience4j的灵感来自于Hystrix,同样是轻量级的分布式容错方法库,比H...

2018-12-22 11:10:39 4964

原创 云上的数据库怎么做?浅析AWS上Aurora的设计理念

本文来自个人微信公众号:奔跑中的蜗牛要提升个人能力,研究大型互联网公司的架构是相当有必要的,今天给大家分享一篇论文。Amazon在SIGMOD 2017发表了论文《Amazon Aurora: DesignConsiderations for High Throughput Cloud-Native Relational Databases》,里面包含的内容很多,建议每一个关注分布式系统的技术...

2018-08-23 09:45:38 4265

原创 分布式锁方案—redlock算法

分布式系统的复杂之处在于在不同进程需要互斥的访问共享资源时的问题。例如,1、分布式ID,当数据水平拆分之后,如何保证ID的唯一性,并且尽可能的短;2、秒杀系统中的库存,数据结构为商品ID,剩余数量,每次成交会减掉响应数量。如何保证不会超卖;锁的目的是确保多个节点、进程做同样工作的时候,只有一个可以执行成功。有且只有一次。 实现分布式锁有很多方案,例如基于数据

2017-07-14 23:09:50 8025

原创 跨数据中心场景下,kafka集群部署模式

kafka在多数据中心场景下和单数据中心的场景部署是一样的吗?kafka的性能对分布式系统而言,非常重要。一旦延迟较大的情况下,应该如何部署。一、为什么要跨数据中心部署?大型的分布式软件,发展到一定阶段,一个数据中心满足不了需求,通常在一个城市会有多个数据中心,一个城市的多个数据中心通过专线连接,延迟比较小。如果还是满足不了需求,例如你在世界各地都有用户,不可能让美国用

2017-03-04 06:37:51 9867

原创 一个虐你千百遍的问题:“RPC好,还是RESTful好?”

看到知乎上有这样一个问题WEB开发中,使用JSON-RPC好,还是RESTful API好?还有其他优秀的推荐方案吗?先科普一下REST 和 RESTful 什么区别?    REST,即Representational State Transfer的缩写。翻译过来是表现层状态转换。如果一个架构符合REST原则,就称它为RESTf

2016-09-20 06:40:04 63913 5

原创 你需要了解的未来技术趋势——serverless怎样改变未来架构

什么是serverless?    serverless并不是不需要服务?而是你无需关注服务。举个例子,现在你开发一个应用,需要关心缓存、mq、web容器,serverless环境下,你只需要关注代码层面的东西。如果想用mq,只需调用函数解决,无需关注mq是否能承受压力,理论上,无上限,至于什么时候需要扩展?成本如何控制?云会为你做好一切。    serverless的现状

2016-06-09 18:40:42 10759

原创 为什么是kafka(二)

回答几个网友提出的问题,不清楚的可以看上一篇内容。1、  kafka的删除策略应该怎么配置?为了提升性能,我是不是应该1小时删除一次消费过的数据。完全可以根据磁盘大小配置,只要磁盘足够用,完全没必要删除的那么着急。Kafka的吞吐量不会因为数据量的增长而降低。因为读写数据时,kafka完全是顺序的,只记录offset,时间复杂度是O(1),我曾经测试过上T的数据,完全不受影响。反倒是数

2015-06-12 08:44:48 1887

原创 为什么是kafka?

在互联网和大并发的企业级应用中,kafka会越来越重要,会被更多的人重视,就算是不用kafka,也会有跟kafka类似的架构模式、原理差不多的MQ,类似于rocketMQ。现在差的,就是被更多的企业使用,更复杂的场景证明。

2015-06-04 08:18:25 2802

原创 架构师的九项绝技

更多文章请扫描我的头像,关注公众号奔跑中的蜗牛。耐得住寂寞在你的研究领域,有可能是孤独的,可能没有人和你一起研究,没有人和你一起讨论。也许是很枯燥的。你学到的某项技能也许没有应用场景,永远都不会被别人发现。强大的内心你提供的方案有可能会引来无数的指责声、甚至是嘲笑声,尤其是在某项技术引进的前期。这是很正常的,无论你的方案有多完美,总有一些小疏忽,这给了反对者充分的理由。“我说这样不

2015-05-22 17:55:48 1559

原创 认识异步、非阻塞、futrue、callback

高并发、大访问量实际是程序猿界的分水岭,如何从各个角度去解决这些问题?这也是面试的时候架构师被问过的最多的问题。而异步、非阻塞对于性能的提升是每个武林高手的锦囊妙计。异步和非阻塞是什么关系?什么区别?此问题一出,可以直接鉴别真伪,不信你问下试试~哈哈!!!看完此文,相信你就清楚了。异步毫无疑问,就是启动多个线程,让每个线程去做一部分工作,互不干扰。当需要汇聚结果的时

2015-05-14 09:00:25 1825

原创 典型的集群架构模型

在这个开源的世界,实际上摆在我们面前的方案有很多。很多时候连架构师都难以选择。下面介绍三种典型的集群架构模型。重客户端系优势:1、注册中心作为协调器,客户端和服务端直连,消费者和提供者只在服务启动时或者服务发生变化时才依赖注册中心,其余时间注册中心出现任何问题,服务发生变化之前都不会影响调用,注册中心压力较小;2、客户端做负载均衡,生产者和消费者

2015-05-10 07:12:57 3703

原创 RocketMQ与Kafka对比(18项差异)评价版

RocketMQ与Kafka对比(18项差异)2015-02-28王启军奔跑中的蜗牛此文是rocketmq作者vintage.wang所写,对于每项对比,后面都增加了我的观点,有不对的地方,请各位指出。淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以

2015-03-10 18:42:02 4290

原创 分布式任务调度实现方式

背景  分布式任务调度是非常常见的一种应用场景,一般对可用性和性能要求不高的任务,采用单点即可,例如linux的crontab,spring的quarz,但是如果要求部署多个节点,达到高可用的效果,上面的方案就不适用了。实际上任务调度的实现有两种情况,第一种是通过mq来实现,mq做好了数据切分,负载均衡的效果,本文说的是另一种情况。要

2015-03-06 16:26:16 3768 2

转载 ZooKeeper的一个性能测试

台ZooKeeper服务器。8核64位 jdk1.6;log和snapshot放在不同磁盘场景一同一个目录下,先create EPHEMERAL node,再delete;create和delete各计一次更新。没有订阅。一个进程开多个连接,每个连接绑定一个线程,在多个path下做上述操作;不同的连接操作的path不同测试结果数据汇总如下:dat

2014-08-15 14:08:38 1512

原创 无线客户端应该如何选择rpc服务

对于移动端来说,流量非常重要,

2014-05-02 18:09:35 1029

原创 什么样的列使用索引?

这个问题以前经常面试别人,大多数的回答都是非常浅的。只回答重复度低的,为什么重复度低的就适合采用索引,好像很少有人能答出来。先说一个前提,所有的系统瓶颈最终都落在io上,包括网络io和磁盘io,例如,一台机器cpu每秒可以执行5亿条指令,如果是7200转的磁盘的话,一分钟7200转,一转1/120秒,大概要9-11毫秒的样子。换句话说,一次磁盘访问的时间大概是40万条指令。所以我们希望的是能充

2014-02-08 18:28:54 1026

原创 公司吐槽

项目的成败绝大多数并不因为技术导致的,而是因为有了太多的消耗。我们认同试错精神,会给产品经理充足的试错机会。但是请各位产品经理注意,如果你自己没有主见,A觉得这么好,你就觉得这么好,B觉得那么好,你就再改回去,让所有的开发人员都跟着你折返跑,他们会对你失去信心,因为你的每次改动,你一分钟就可以说完,但是他们需要花几天解决。所以我们希望你能用故事的形态提出需求,你这个故事是可以感动大多数人的,是完整

2014-01-23 14:27:57 1043

原创 编程是不是青春饭?

很多人问我,编程是不是年龄大了就不行了啊?还有好多面试的人也说,我准备这几年练练技术,过几年转管理;有时候我甚至不想回答这些问题。30岁也就是编程的起步阶段,你说能编到什么时候?    中国的技术发展从上世纪90年代才刚刚开始,而美国这种发达国家早已发展了上百年,在外企,有好多四五十岁还奋斗在一线的程序员,这些人,绝对顶的过几个二三十岁的程序员。    编程是没有界限的,小到三四岁的孩子,

2014-01-08 18:14:13 1905

转载 hdfs和swift

http://storage.chinabyte.com/95/12254095.shtml最近在Quora上有人提到一个问题,有关Hadoop分布式文件系统和OpenStack对象存储的不同。  问题原文如下:  “HDFS (Hadoop分布式文件系统)和OpenStack对象存储(OpenStack Object Storage)似乎都有着相似的目的:实现

2013-12-18 17:18:08 1165

转载 cloudify(一)基于openstack安装

配置openstack启动,用openstack作为iaas层前提条件openstack已经安装好启动cloudify shell,修改\clouds\openstack下properties配置文件// Credentials – Enter your cloud provider account credentials hereuser=""//openstack里的用

2013-12-18 10:48:46 2058

原创 接口处理方式

接口处理方式  这是每个应用中最薄弱的环节,也是最重要的环节,比如国际标,肯定要依赖中心库,并且强依赖。* 注释要写详细,包括出现异常情况怎么处理,重要返回内容哪个可能为空* 建立单元测试,覆盖率要接近100%,每次上线前都要执行测试用例,调用的应用要检查依赖的应用是否可以正常建立连接,不要等你替换生产环境的时候再检查。* 定义接口要尽量考虑全面、通用,比如你定义了一个发短

2013-11-28 11:04:51 1392

转载 性能优化总结:CPU和Load、NIO以及多线程

文章转自http://softtest.chinaitlab.com/qtjs/801881.html    当应用遇到规模化问题的时候,就是考虑性能优化的时候了。今天同事和我聊起了NIO在客户端的使用与BIO有什么优势,也勾起了我前一阵子和其他同学交流优化的一些想法,纯粹个人的一点想法。  CPU利用率和Load  在过去做压力测试的时候,我们经常会关注两个指标,CPU和

2013-11-28 09:58:55 891

原创 架构师该做的事

架构师要做的是未来,不是现在,现在问题交给开发人员解决。应用和人一样,你要知道弱点在哪儿,不断的去补强。哪怕你不去修复,你一定要知道现在系统哪里最薄弱,哪里可以花点时间解决一下致命的问题。谁说代码没有生命?你还要把这些技术债都通知到产品经理、项目经理,告诉他们,这里一直都是有病的,你治不治?

2013-11-07 15:00:41 675

原创 测试的烦恼

首先你为什么选择测试职业?对于功能测试,我相信一半以上的人说的是假话,大多数人选择测试行业是基于他的高薪低要求,特别是在刚刚进入测试行业初期。选择测试行业也许你迫于生活的压力,也许你面对开发胆怯,但是无论如何,测试的经历能给你带来的机会会很多!是不是测试真的没有技术含量?当然不是,摊煎饼的也能成神,何况测试。测试人员的天赋很重要,犀利的眼光,严谨的思维逻辑,细心、专注、责任感,包括

2013-10-23 16:49:44 872

原创 js,css,img等浏览器缓存问题解决方案

细节决定成败!浏览器缓存的意义在于提高了执行效率,但是也随之而来带来了一些问题,导致服务端修改了js、css,客户端不能更新方法一 生成随机数字缺点,浏览器缓存失去意义,每次都动态加载。方法二 版本号控制,设置全局变量,每次发布前版本号加1“>推荐这种做法,这种做法比较简单。缺点是HTML页面不能使用,但是这种页面应该不太多更多方法:采用读取文件

2013-10-22 15:55:48 1742

开发人员应该有生产环境的权限吗?

为了安全,公司只给了运维人员生产环境的权限,所有的开发人员一律无权限。这是不是开发人员的悲哀啊!!自己开发的程序,在线上跑的情况都不知道。运维人员真的就能维护好生产环境,他们真的懂jvm性能调优,生产环境上的日志,他们懂吗?你们都是怎么控制权限的?...

2012-06-13 17:17:06 2185

不让你写代码了是不是也就意味着你老了

不让你写代码了,是不是也就意味着你老了以前喜欢把代码从头到尾,利用逻辑走一遍现在喜欢预测,预测错了,调试以前因为开发了一个功能幸福,兴奋,现在因为了解了一个想法兴奋...

2012-06-13 14:35:50 152

原创 oracle linux下重启

以oracle9i为例 (1) 以oracle身份登录数据库,命令:su – oracle (2) 进入Sqlplus控制台,命令:sqlplus /nolog (3) 以系统管理员登录,命令:connect / as sysdba (4) 启动数据库,命令:startup (5) 如果是关闭数据库,命令:shutdown immediate (6) 退出sqlplus控制...

2010-05-28 14:29:34 135

原创 RecycleBin

RecycleBin出自家园之一亩三分地儿跳转到: 导航, 搜索1. 启用/禁用RecycleBin: 通过设置初始化参数recyclebin,可以控制是否启用回收站功能,默认是开启的。�]2q�Y�E/_*o9V�|/t�\0SQL> alter system set recyclebin=off; 系统已更改。 SQL> alter system set...

2010-05-28 14:28:07 787

转-千万别让跳槽成为习惯

看见很多网友回复我是hr,本人并非hr,这篇文章是一个猎头写的,我已经注明出处,感觉里面有很多可取之处,拿来分享。本人正在跳槽中。。。。。。原文出自http://blog.sina.com.cn/s/blog_4a388a6d0100f4px.html在技术领域,跳槽已经是司空见惯的事情了,反正到哪里都是做项目,在哪里做不是做呢?因此很多人已经习惯于通过跳槽来提升自身的价值。对于目前比较混...

2010-04-06 13:27:09 130

分页中如何有效的截取count语句

/** * 截取hql from以后的部分 * @param removeOrders * @return */ protected String removeSelect(String hql) { return hql.substring(getBeginPos(hql.toLowerCase(),0)); } protected int getBe...

2008-08-01 16:08:55 298

javamail验证问题

[code="java"]package com.effectivebiz.mgt.mail.service;import java.util.*;import java.io.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;/** * * Tit...

2008-04-07 17:57:31 436

三天了struts+hibernate+spring整合遇到奇怪的问题

在本机运行正常,但在其他机器上出现下面的异常,各种情况都考虑了,也没解决HTTP Status 404 - Servlet action is not available type Status report message Servlet action is not available description The requested resource (Servlet action is...

2008-03-05 13:53:23 123

字符串做主键有什么后果?

如题,最近有人问我这个问题,daren指点

2007-11-13 13:00:04 3087

当当价格系统设计实现

当当价格系统设计实现,王启军,当当网架构师。

2015-06-13

断点续传java实现

java实现断点续传 private void setHeader(URLConnection con) { con .setRequestProperty( "User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3"); con.setRequestProperty("Accept-Language", "en-us,en;q=0.7,zh-cn;q=0.3"); con.setRequestProperty("Accept-Encoding", "aa"); con.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7"); con.setRequestProperty("Keep-Alive", "300"); con.setRequestProperty("Connection", "keep-alive"); con.setRequestProperty("If-Modified-Since", "Fri, 02 Jan 2009 17:00:05 GMT"); con.setRequestProperty("If-None-Match", "\"1261d8-4290-df64d224\""); con.setRequestProperty("Cache-Control", "max-age=0"); con.setRequestProperty("Referer", "http://www.skycn.com/soft/14857.html"); }

2014-01-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除