自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(271)
  • 收藏
  • 关注

原创 使用nginx进行ab站点的过程简单分析

由于业务需要,在官网上部署两套前端页面,通过特定的字段(例如手机号码)进行分流,来达到a/b站的要求,后续对a/b站最终数据进行分析,选出哪部分页面对用户体验来说会更优秀。 nginx请求分流考虑利用nginx的分流功能:http://neoremind.com/2012/03/nginx%E6%A0%B9%E6%8D%AEcookie%E5%88%86%E6%B5%81/ 

2017-04-11 10:04:21 1052

原创 Solr在Linux中的产品化安装

目前服务器上安装的solr版本:5.3.1,不同于测试和研究,如果要把solr产品化部署,需要将其安装成一个服务。在solr压缩包中的bin/目录下有一个脚本文件**install_solr_service.sh**,负责solr的安装,并注册为自启动的service。 1. 环境准备首先需要创建一个solr用户,并赋予其相应的权限:groupadd zpsolruserad

2017-04-11 10:04:13 597

原创 http切换至https相关配置

为了更好的用户体验,启用了https,需要去各大主机商那里购买SSL证书,https的好处大概以下几点: 1.数据传输加密,防止信息被窃取;2.防止被欺诈,增加网站信任,防钓鱼;3.防止被劫持; 部署了https的整体结构如图:   https配置,以nginx为例,参考:http://www.cnblogs.com/wang_yb/p/43

2017-04-11 10:04:04 1578

原创 对机房服务器的整理记录和总结

双11过后,当前需要对本公司的所有服务器进行清点整理,便跟着运维一起学习了很多关于这方面的东西,同时自己也做了一些记录。 我们当前的机房的整体架构图:  所有设备,硬件防火墙,核心交换机,接入交换机以及vpn交换机,都采用2个设备,不会存在单点问题,后续会通过zabbix对所有设备进行硬件级故障监控; 所有刀片服务器通过接入交换机和核心交换机组成内网,使用192.168

2017-04-11 10:03:57 3125 1

原创 Ganglia工具用于监测服务器集群状态

Ganglia的基本结构 Ganglia是由gmond, gmetad和gweb三部分组成。 gmond(Ganglia Monitoring Daemon)是一种轻量级服务,安装在每台需要收集指标数据的节点主机上。gmond在每台主机上完成实际意义上的指标数据收集工作,并通过侦听/通告协议和集群内其他节点共享数据。使用gmond,你可以很容易收集很多系统指标数据,如CPU、内存、

2017-04-11 10:03:48 984

原创 java中的线程安全与锁优化

Java的线程是映射到操作系统的原生线程之上的,如果要阻塞或唤醒一条线程,都需要操作系统来帮忙完成,这就需要操作系统来帮忙完成,需要从用户态转换到内核态中,状态转换需要耗费很多的处理器时间。如果是非常简单的代码同步块,状态转换消耗的时间可能比用户代码执行的时间还要长。 因此可以说,synchronized是Java语言中的一个重量级操作,对于有经验的程序员都会在确实必要的情况下才使用这

2017-04-11 10:03:39 439

原创 总结线上遇到的MySQL死锁问题

线上遇到了MySQL死锁的相关问题,需要查看MySQL出现的Deadlock日志,可以通过执行: show engine innodb status  来查看innodb类型数据库的状态,查找laster detected deadlock部分,可以看到最近造成死锁的两条sql ------------------------LATEST DETECTED

2017-04-11 10:03:33 2491

原创 nginx基本配置学习

最近由于线上用到nginx,对其中的结构不太熟悉,故对其进行详细的分析和学习总结,其中借鉴了https://www.zybuluo.com/phper/note/89391, http://seanlook.com/2015/05/17/nginx-install-and-config/(写得非常好)。 关于代理 正向代理:也就是一个代理,其工作原理就是一个跳板,加入我要访问g

2017-04-11 10:03:26 468

原创 一次压测情况下Solr部分性能调整

在将solr模糊词搜索从 copyfield方式修改为 qf(query function)之后,其query的性能降低不少。原来是采用将所有需要搜索的字段都copy至同一个字段中,最近要根据模糊匹配结果的权重分析,这种方式根本无法满足要求,所以就采用了query function,这样就能定义不同字段的权重了,例如我们qf可以如下定义:  product_name^2.0 cat

2017-04-11 10:03:20 2320

原创 SimpleDateFormat导致的多线程问题

今天在跑压力测试的过程中,一个看似不可能出错的地方居然报错了,起因在于我们定义的DateUtil工具类,用于将日期进行合理的format以及parse,出现了多线程问题(在单线程时不会出错,只有压测过程中会出现错误)。 代码上分析,原来编写的DateUtil简直是漏洞百出,首先将SimpleDateFormat定义为static变量,这表明在JVM中仅存在一份: private

2017-04-11 10:03:14 3997 1

原创 Java和dubbo中的SPI机制学习

关于java的SPI机制,可以参考:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html 为了实现在模块装配时的时候不在程序中动态指明,需要提供一种服务发现机制,为某个接口寻找服务实现的机制,就是将装配的控制权转移到程序之外,在模块化设计中这个机制尤其重要。 Java SPI(Service Provider

2017-04-11 10:03:08 1374

原创 Scala基础学习入门

从技术上来讲,scala程序并不是一个解释器,你在命令行中输入的内容被快速地编译成字节码,然后这段字节码交给Java虚拟机执行。 变量声明: valval不能再继续赋值,鼓励使用该命令方式var生命周期中可以被多次赋值大多数程序并不需要那么多var变量 scala中变量或函数的类型总是写在变量或函数名称后面: val greeti

2017-04-11 10:02:59 641

原创 Storm环境搭建和基本入门

要学习storm,我们可以先从并发编程网(ifeve.com)的storm入门开始:http://ifeve.com/getting-started-with-stom-index/ Storm集群安装部署 http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm

2017-04-11 10:02:51 1460

原创 RedisCluster的scan命令

在redis中是支持使用通配符的使用,例如‘?’或是’’,所以我们在获取redis里面的某个db里面的所有数据可以用 `keys `这样的指令来实现。但是存在一个问题就是这样做的话,在数据量很大的情况下效率是很不理想的,一般情况下redis的slowlog中总会少不了keys xxx这种类型操作(如果有人在其上面执行该操作的话) scan命令可以帮助我们解决使用keys命令遍历大量数据而导

2017-04-11 10:02:40 10358 1

原创 理解和学习Solr的score机制

参考:http://www.cnblogs.com/rcfeng/p/4067896.htmlhttp://www.cnblogs.com/forfuture1978/archive/2010/03/07/1680007.html 在solr的document文档定义中(schema.xml),需要对每个字段进行定义indexed, stored,其中表示的含义为:  

2017-04-11 10:02:31 5055

原创 Redis hash tag进行分槽导致的问题

我们已经对redis cluster中的key进行了一定的分槽,但是导致了redis节点数据的不均匀分布,三个节点数据量大小对比:5:1:1,但更加恐怖的是内存使用对比,在最多的一个进程中占用超过900M,而最少的一个进程仅60M。 对比redis的dump文件,是其他两个的20倍 -rw-r--r--. 1 root root 14448246 8月 19 18:45 d

2017-04-11 10:02:25 11334 2

原创 Solr Web增加Basic安全性验证

Solr在5.0版本后,不再提供war包部署的方式,取而代之的是内置了jetty服务, 但是我们发现其中并没有内置任何安全性相关检查,任何人如果知道了我们的外网地址就能直接访问并修改其中的索引。经过查找可以使用jetty的方式来限制web访问。 solr/server/solr-webapp/WEB-INF/web.xml中增加以下字段:  

2017-04-11 10:02:19 1859

原创 服务器开启JMX监控

JMX是一个框架,提供了一种功能,可以实时查询应用程序中通过JMX向外部公布的相应参数或者是其他应用程序,同时也可以通过JMX来实时地调用应用程序使用JMX向外部公布的接口,来完成一些功能操作。 如果想要对远程服务器的进程进行监控,需要在服务器进行相关设置,启动守护进程。如果想进一步定制自己的MXBean,可以考虑在应用程序中registerMXBean,当然在web应用中也可以借助Spr

2017-04-11 10:02:12 2779

原创 RedisCluster读写分离改造

RedisCluster模式启动的环境中,通过Redis中的每个连接,都可以访问 cluster nodes 访问到所有的服务器列表以及其所处于的角色(master/slave)。对于RedisCluster来说,在实际运行时,只会访问到其中的master节点,slave既不能用于write操作,也不能进行read。 原有JedisCluster    JedisCl

2017-04-11 10:02:05 4944 1

原创 JedisCluster模式尝试进行批量操作

搭建完redis集群后,可以通过jedis的JedisCluster来访问Redis集群,这里列出使用jedisCluster的spring bean配置方式:   <bean id="redisCluster" class="redis.clients.jedis.JedisCluster"

2017-04-11 10:01:58 7609

原创 JedisCluster中应用的Apache Commons Pool对象池技术

对象池技术在服务器开发上应用广泛。在各种对象池的实现中,尤其以数据库的连接池最为明显,可以说是每个服务器必须实现的部分。 apache common pool 官方文档可以参考:https://commons.apache.org/proper/commons-pool/。 结合JedisPool看Commons Pool对象池技术 结合JedisPool,我们来了解一下c

2017-04-11 10:01:51 1725

原创 理解Storm Metrics

在hadoop中,存在对应的counter计数器用于记录hadoop map/reduce job任务执行过程中自定义的一些计数器,其中hadoop任务中已经内置了一些计数器,例如CPU时间,GC时间等。 Storm中也存在类似counter的功能,metrics,详细介绍可以参考下面的文档: http://storm.apache.org/releases/1.0.1/Metri

2017-04-11 10:01:43 1051

原创 Storm存储结果至Redis

原有的事务支持使用MemcachedState来进行,现在需要将其迁移至Redis,并且需要记录所有key值列表,因为在redis中虽然可以使用keys *操作,但不是被推荐的方式,所以把所有结果存在Redis中的一个HASH格式字段中。 关于Redis与Storm集成的相关文档,可以参考: http://storm.apache.org/releases/2.0.0-SNAPSH

2017-04-11 10:01:33 2567

原创 Storm集成Kafka的Trident实现

原本打算将storm直接与flume直连,发现相应组件支持比较弱,topology任务对应的supervisor也不一定在哪个节点上,只能采用统一的分布式消息服务Kafka。 原本打算将结构设置为: 最后结构更改为:   集成Kafka storm中已经写好了KafkaSpout用来接收Kafka中间件上的消息,并发射到Bolt中,只需要依赖 storm-k

2017-04-11 10:01:26 687

原创 flume系统使用以及与storm的初步整合

Flume NG的简单使用可以参考介绍文档:http://blog.csdn.net/pelick/article/details/18193527,图片也来源此blog:   下载完flume后,就可以在 https://flume.apache.org/FlumeUserGuide.html 中根据教程来启动agent console 启动完成

2017-04-11 10:01:18 603

原创 服务端tomcat的简单监控

由于线上对tomcat监控处于失控的状态(只能通过跳转,简单地jstack/jstat进行监控),故需要针对tomcat快速查看其运行状态 Tomcat-manager 在tomcat/webapps中存在目录 manager,用于初步监控tomcat jvm相关参数指标。此时,用户需要手动编辑conf/tomcat-users.xml配置文件,加入一行:   

2017-04-11 10:01:12 2227

原创 Lucene 中的Tokenizer, TokenFilter学习

lucene中的TokenStream,TokenFilter之间关系 TokenStream是一个能够在被调用后产生语汇单元序列的类,其中有两个类型:Tokenizer和TokenFilter,两者的不同在于TokenFilter中包含了一个TokenStream作为input,该input仍然可以为一种TokenFilter进行递归封装,是一种组合模式;而Tokenzier接受一个Re

2017-04-11 10:01:04 584

原创 本地通过源码方式启动solr

首先,下载solr5.5.0源码,http://apache.fayea.com/lucene/solr/5.5.0/solr-5.5.0-src.tgz 解压完成后,分为几个目录,然而solr是通过ant编译的,我们想将其转换为maven方式,发现其中存在dev-tools/maven中,其中对应的说明: Copy the Maven POM templates from

2017-04-11 10:00:57 2080

原创 Spring主从数据源动态切换

参考文档:http://uule.iteye.com/blog/2126533http://lanjingling.github.io/2016/02/15/spring-aop-dynamicdatasource/ 我们的需求达到的目标和现有的条件: 不同类型数据源都可能存在master和slave区分;数据源之间已经可以通过package区分,不同packag

2017-04-11 10:00:47 334

原创 Lucene根据字段进行自定义搜索扩展

最近需要对公司的产品搜索功能做一步改动,搜索到的结果首先按照是否有库存进行排序,然后再按照销量。由于库存量也是一个整数,如果直接按照库存量进行倒序排序的话,是不符合要求的,Lucene也没有支持我们这种特殊的业务需求,但是可以通过扩展的方式进行改写。 参考文档:http://blog.csdn.net/cctcc/article/details/45672247 public

2017-04-11 10:00:40 1057

原创 Solr Suggest组件的使用

使用suggest的原因,最主要就是相比于search速度快,In general, we need the autosuggest feature to satisfy two main requirements: ■ It must be fast; there are few things that are more annoying than a clunky type- ahea

2017-04-11 10:00:27 660

原创 Solr-DIH建立索引并执行简单初步的查询

我们将solr的安装目录设置为$SOLR_INSTALL, ./solr start,不使用任何原有的examples来进行,启动完成后,不存在任何的core,提示No cores available。 在手动执行Add Core操作时,需要保证instanceDir和dataDir事先必须存在,以便能够建立目录成功。   根据错误提示,目录应该建立在$SOLR_

2017-04-11 10:00:21 1151

原创 基于Redis实现简单的分布式锁

在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务(两阶段提交,数据源可分开),也可以借助消息中间件(消费者处理需要能幂等)。通过Observer模式来发布领域事件可以提供很好的高并发性能,并且事件存储也能追溯更小粒度的事件数据,使各个应用系统拥有更

2017-04-11 10:00:14 443

原创 alibaba fastjson的使用总结和心得

最初接触alibaba fastjson是由于其性能上的优势,对比原来采用codehause.jackson的解析,在hadoop平台上的手动转换对象有着将近1/3的性能提升,但随着开发应用越来越多,渐渐地也发现了在其他方面的强大之处,例如直接转化泛型(jackson对泛型的支持相对来说就比较差)。 Fastjson会自动处理对象中的泛型,将其解析成原来定义好的对象,建议一定要将泛型类型定

2017-04-11 10:00:07 2882

原创 Spring的事务管理

虽然我们在用Spring的事务管理,但总体感觉使用的时候未知(未搞懂)的概念还是挺多的,心里总是没有底,在使用的过程中也比较容易用错误的方式来实现。 关于Spring声明式事务,具体可以参考下面这篇文章: http://www.cnblogs.com/hellojava/archive/2012/11/21/2780694.html 目前我们使用的是第五种方式,即全注解方式

2017-04-11 09:59:57 238

原创 使用maven构建基本的web项目结构

由于当前公司在组织进行项目基本结构的整理,将以前通过eclipse/ ant 方式构建的项目向maven上迁移,于是便进行maven项目方面的调研。 对于maven项目,基本的结构已经在标准文件中:  http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout

2017-04-11 09:59:49 1093

原创 Solr入门

由于现公司要强化一下搜索相关的功能,特对Solr及Lucene进行简要的研究,并做一些个人总结。  Solr采用Lucene搜索库为核心,提供全文索引和搜索的开源企业平台,提供REST的HTTP/XML和JSON的API。 Solr项目的英文主页:http://lucene.apache.org/solr/,其中介绍了Solr的基本情况:Solr is highly reliabl

2017-04-11 09:59:40 603

原创 APP推送通知相关实现

关于推送通知,iOS推送主要是通过服务端来实现的,相关过程可以参考下面两篇文章: http://cshbbrain.iteye.com/blog/1859810 http://zxs19861202.iteye.com/blog/1767727 文章中介绍的jar包列表: bcprov-jdk16-145-1.jarcommons-io-2.0.1.j

2017-04-11 09:59:32 1294

原创 ApacheOFBiz的相关介绍以及使用总结(三)

Ofbiz中还提供了一些基础性服务,可以直接用来使用,下面就简单介绍说明一下。 ofbiz邮件发送服务 ofbiz中提供发送邮件相关功能:sendMailFromScreen context.get(“userLogin”),可以拿到当前登录用户的所有信息,其中的属性 userLoginId用户登录ID,可以用于获取用户登录的相应信息。   发送邮件的过程

2017-04-11 09:59:20 1532

原创 局域网使用NAT进行测试第三方接口

问题分析 在局域网内开发一些涉及到第三方的接口调用功能时(譬如:支付),需要对方服务器进行接口回调,接受对方发送过来的信息。问题来了,我们一般开发都是在内网,如何才能获取到外网返回的数据呢?如果每次都是通过部署线上然后打log来调试,效率实在是太低,要是我们能够将内网的地址映射到外网那么问题就解决了! NAT介绍 NAT(Network Address Tran

2017-04-11 09:59:13 1023

空空如也

空空如也

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

TA关注的人

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