<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[icangfeng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/icangfeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; icangfeng]]></copyright><item><title><![CDATA[网关 zuul 线程阻塞分析]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/103616483</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/103616483</guid><author>icangfeng</author><pubDate>Thu, 19 Dec 2019 16:16:32 +0800</pubDate><description><![CDATA[网关 zuul 线程阻塞分析

本文基于一个线上真实问题。在 Zuul 无任何安全防护措施时，若遇到较大流量(单个Zuul应用在默认配置下200并发即可)，将产生非常严重的后果。

本文主要是探寻下问题产生的原因，问题背景与处理

先简述下问题背景

网络拓扑：请求 -&gt; nginx -&gt; 容器编排工具的LB(Haproxy) -&gt; 网关(Zuul) -&gt; 具体服务

现象...]]></description><category></category></item><item><title><![CDATA[网关 zuul自定义SimpleHostRoutingFilter]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/103616214</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/103616214</guid><author>icangfeng</author><pubDate>Thu, 19 Dec 2019 16:04:38 +0800</pubDate><description><![CDATA[网关 zuul自定义SimpleHostRoutingFilter

zuul的SimpleHostRoutingFilter主要用来转发，是使用httpclient来转发请求的，但是有时候我们需要改动相关httpclient的配置，这个时候，就需要修改SimpleHostRoutingFilter了，这里讲一下如何扩展SimpleHostRoutingFilter。

自定义SimpleHost...]]></description><category></category></item><item><title><![CDATA[源码调试  ElasticSearch 2.x]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/102859923</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/102859923</guid><author>icangfeng</author><pubDate>Fri, 01 Nov 2019 16:36:55 +0800</pubDate><description><![CDATA[前言

阅读Elasticsearch源码的第一步是搭建调试环境，在这个过程中遇到了问题所以记录下。


1. 环境介绍

windows10
	Java 1.8
	Maven 3.3.9
	Intellij IDEA
2. 步骤

下载源码https://github.com/elastic/elasticsearch/tree/2.4
	导入到IDEA，setting maven
	在id...]]></description><category></category></item><item><title><![CDATA[分布式 ID 生成器]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/89713803</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/89713803</guid><author>icangfeng</author><pubDate>Tue, 30 Apr 2019 17:43:58 +0800</pubDate><description><![CDATA[分布式 ID 生成器

一个唯一 ID 在一个分布式系统中是非常重要的一个业务属性，其中包括一些如订单 ID，消息 ID ，会话 ID，他们都有一些共有的特性：

全局唯一。
	趋势递增。
全局唯一很好理解，目的就是唯一标识某个次请求，某个业务。

通常有以下几种方案：

基于数据库

可以利用MySQL中的自增属性auto_increment来生成全局唯一 ID，也能保证趋势递增。 但这...]]></description><category></category></item><item><title><![CDATA[分布式锁]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/89713645</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/89713645</guid><author>icangfeng</author><pubDate>Tue, 30 Apr 2019 17:36:58 +0800</pubDate><description><![CDATA[数据库锁：

优点：直接使用数据库，使用简单。

缺点：分布式系统大多数瓶颈都在数据库，使用数据库锁会增加数据库负担。

缓存锁：

优点：性能高，实现起来较为方便，在允许偶发的锁失效情况，不影响系统正常使用，建议采用缓存锁。

缺点：通过锁超时机制不是十分可靠，当线程获得锁后，处理时间过长导致锁超时，就失效了锁的作用。

zookeeper锁：

优点：不依靠超时时间释放锁；可靠性高；系统要求高...]]></description><category></category></item><item><title><![CDATA[Spring Cloud Sleuth + zipkin 实现服务追踪]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/89713294</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/89713294</guid><author>icangfeng</author><pubDate>Tue, 30 Apr 2019 17:29:10 +0800</pubDate><description><![CDATA[服务追踪

Spring Cloud Sleuth实现了一种分布式的服务链路跟踪解决方案，通过使用Sleuth可以让我们快速定位某个服务的问题。



官方文档地址如下：

http://cloud.spring.io/spring-cloud-static/spring-cloud-sleuth/2.0.1.RELEASE/single/spring-cloud-sleuth.html

基本...]]></description><category></category></item><item><title><![CDATA[Java mongodb 多主键（group）mapReduce]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81303848</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81303848</guid><author>icangfeng</author><pubDate>Tue, 31 Jul 2018 15:17:26 +0800</pubDate><description><![CDATA[
业务需求:统计商户下，专题，用户统计下单数量

话不多说，直接上代码

@Autowired
private MongoTemplate mongoTemplate;
// 使用的是spring 的mongodb 

@Test
public void test(){

  //Query query = Query.query(new Criteria());
  String map = &quot;...]]></description><category></category></item><item><title><![CDATA[数据库分库分表]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81209205</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81209205</guid><author>icangfeng</author><pubDate>Thu, 26 Jul 2018 10:44:59 +0800</pubDate><description><![CDATA[分库分表

 

一种是按照不同的表（或者Schema）来切分到不同的数据库（主机）之上，这种切可以称之为数据的垂直（纵向）切分

另外一种则是根据表中的数据的逻辑关系，将同一个表中的数据按照某种条件拆分到多台数据库（主机）上面，这种切分称之为数据的水平（横向）切分。

 

垂直切分的优点： 

1) 拆分后业务清晰，拆分规则明确。 

2) 系统之间整合或扩展容易。 

3) 数据维护简单。
...]]></description><category></category></item><item><title><![CDATA[ElasticSearch性能优化]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81209171</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81209171</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 19:59:31 +0800</pubDate><description><![CDATA[ElasticSearch性能优化

1) 防止脑裂

discovery.zen.minimum_master_modes: 50% 节点最小数

2) 设置memory_lock

来锁定进程的物理内存地址 bootstrap.memory_lock: true 允许 JVM 锁住内存，禁止操作系统交换出去

3) 设置分片数

如果分片数过少或过多，都会导致检索比较慢。

　　分片数过多会导...]]></description><category></category></item><item><title><![CDATA[Redis持久化的几种方式]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81209128</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81209128</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 19:58:22 +0800</pubDate><description><![CDATA[ 

1.RDB

    RDB持久化：（原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化）

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘，实际操作过程是fork一个子进程，先将数据集写入临时文件，写入成功后，再替换之前的文件，用二进制压缩存储。

 

2.AOF

    AOF持久化：（append only file）持久化（原理是将Reids...]]></description><category></category></item><item><title><![CDATA[Spring cloud Feign正确的使用方法和性能优化注意事项]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81203745</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81203745</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 15:37:15 +0800</pubDate><description><![CDATA[Feign正确的使用方法和性能优化注意事项

1. feign自定义Configuration和root 容器有效隔离。

用@Configuration注解
	不能在主@ComponentScan (or @SpringBootApplication)范围内，从其包名上分离
	注意避免包扫描重叠，最好的方法是明确的指定包名
2. Spring Cloud Netflix 提供了默认的Bean类型...]]></description><category></category></item><item><title><![CDATA[Spring cloud Hystrix 参数详解]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81203588</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81203588</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 15:22:14 +0800</pubDate><description><![CDATA[hystrix.command.default和hystrix.threadpool.default中的default为默认CommandKey

Command Properties

Execution相关的属性的配置：


	hystrix.command.default.execution.isolation.strategy 隔离策略，默认是Thread, 可选Thread｜Semaph...]]></description><category></category></item><item><title><![CDATA[Spring cloud Zuul 参数调优]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81203517</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81203517</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 15:20:04 +0800</pubDate><description><![CDATA[zuul 参数调优

适用版本：
spring-boot: 1.4.x.RELEASE
spring-cloud：Camden.SR3
Hystrix: 1.5.6

spring-boot-tomcat 优化参数：

主要只有2个，最大和最小worker线程：


			server.tomcat.max-threads=128 # Maximum amount of worker thread...]]></description><category></category></item><item><title><![CDATA[Hystrix semaphore和thread隔离策略的区别及配置参考]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81203490</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81203490</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 15:17:48 +0800</pubDate><description><![CDATA[Hystrix semaphore和thread隔离策略的区别及配置参考

通用设置说明

Hystrix所有的配置都是hystrix.command.[HystrixCommandKey]开头,其中[HystrixCommandKey]是可变的，默认是default,即hystrix.command.default；另外Hystrix内置了默认参数，如果没有配置Hystrix属性，默认参数就会被...]]></description><category></category></item><item><title><![CDATA[JDBC如何开启事务]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81203338</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81203338</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 15:14:54 +0800</pubDate><description><![CDATA[先看看一个标准的JDBC例子伪代码：


			 

			
Connection conn = DriverManager.getConnection(...);
try{
    con.setAutoCommit(false);
    Statement stmt = con.createStatement();
    //1 or more queries or updates
   ...]]></description><category></category></item><item><title><![CDATA[分布式限流的解决方案]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81202007</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81202007</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 14:31:56 +0800</pubDate><description><![CDATA[ 

业务背景介绍 
对于web应用的限流，光看标题，似乎过于抽象，难以理解，那我们还是以具体的某一个应用场景来引入这个话题吧。 
在日常生活中，我们肯定收到过不少不少这样的短信，“双11约吗？，千款….”，“您有幸获得唱读卡，赶快戳链接…”。这种类型的短信是属于推广性质的短信。为什么我要说这个呢？听我慢慢道来。 
一般而言，对于推广营销类短信，它们针对某一群体(譬如注册会员)进行定点推送，有时这...]]></description><category></category></item><item><title><![CDATA[Java 高并发解决方案（电商的秒杀和抢购）]]></title><link>https://blog.youkuaiyun.com/icangfeng/article/details/81201575</link><guid>https://blog.youkuaiyun.com/icangfeng/article/details/81201575</guid><author>icangfeng</author><pubDate>Wed, 25 Jul 2018 14:08:08 +0800</pubDate><description><![CDATA[电商的秒杀和抢购，对我们来说，都不是一个陌生的东西。然而，从技术的角度来说，这对于Web系统是一个巨大的考验。当一个Web系统，在一秒钟内收到数以万计甚至更多请求时，系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化，同时，从技术层面揭开，为什么我们总是不容易抢到火车票的原因？ 

一、大规模并发带来的挑战 

在过去的工作中，我曾经面对过5w每秒的高并发秒杀功能，在这个过程中，整...]]></description><category></category></item></channel></rss>