<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[juded的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/juded</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; juded]]></copyright><item><title><![CDATA[代付流程设计总结]]></title><link>https://blog.youkuaiyun.com/juded/article/details/79480115</link><guid>https://blog.youkuaiyun.com/juded/article/details/79480115</guid><author>juded</author><pubDate>Sat, 15 May 2021 13:29:09 +0800</pubDate><description><![CDATA[支付系统处于重新架构中，代付功能需要重新设计，寡人被委以重任，花了几天时间总结了代付流程如下。



代付状态值





代付流程设计



一、商户平台代付流程





二、创建代付流程





三、代付查询流程

...]]></description><category></category></item><item><title><![CDATA[热点缓存的流量分发策略]]></title><link>https://blog.youkuaiyun.com/juded/article/details/111452224</link><guid>https://blog.youkuaiyun.com/juded/article/details/111452224</guid><author>juded</author><pubDate>Sun, 20 Dec 2020 17:40:01 +0800</pubDate><description><![CDATA[热点缓存导致系统崩溃

nginx+lua+storm的热点缓存的流量分发策略


]]></description><category></category></item><item><title><![CDATA[基于storm实时热点统计的分布式并行缓存预热]]></title><link>https://blog.youkuaiyun.com/juded/article/details/111441446</link><guid>https://blog.youkuaiyun.com/juded/article/details/111441446</guid><author>juded</author><pubDate>Sun, 20 Dec 2020 16:56:54 +0800</pubDate><description><![CDATA[缓存冷启动

系统第一次上线，缓存里无预热数据，导致大量请求穿透到数据库，导致系统故障
缓存预热


lua脚本转发流量到kafka
storm集群实时统计热点数据，写入zk
缓存服务从zk中读取数据，更新缓存


...]]></description><category></category></item><item><title><![CDATA[多级缓存重建并发冲突]]></title><link>https://blog.youkuaiyun.com/juded/article/details/111434177</link><guid>https://blog.youkuaiyun.com/juded/article/details/111434177</guid><author>juded</author><pubDate>Sun, 20 Dec 2020 16:01:57 +0800</pubDate><description><![CDATA[多级缓存


适用时效性低的商品数据
商品服务发生信息变更，发送消息到kafka消息队列
缓存服务监听到消息变更，更新Redis缓存、ehcache缓存

缓存重建并发冲突

nginx缓存不存在是，通过hash路由到缓存服务A，此时缓存服务A缓存也不存在，则去数据库查询数据，更新Redis缓存
商品服务同时发生信息变更，通过kafka消息路由到缓存服务B，缓存服务B也去更新Redis缓存
针对同一商品，若缓存服务B先更新Redis，缓存服务A后更新Redis，缓存里的商品数据不是最新，且与数据库不一致

]]></description><category></category></item><item><title><![CDATA[数据库与缓存双写一致性方案]]></title><link>https://blog.youkuaiyun.com/juded/article/details/111415409</link><guid>https://blog.youkuaiyun.com/juded/article/details/111415409</guid><author>juded</author><pubDate>Sun, 20 Dec 2020 11:58:10 +0800</pubDate><description><![CDATA[数据库与缓存不一致

优化方案


]]></description><category></category></item><item><title><![CDATA[Redis的RDB和AOF持久化]]></title><link>https://blog.youkuaiyun.com/juded/article/details/110733818</link><guid>https://blog.youkuaiyun.com/juded/article/details/110733818</guid><author>juded</author><pubDate>Sun, 06 Dec 2020 14:28:18 +0800</pubDate><description><![CDATA[这里写自定义目录标题Redis的RDB和AOF持久化1、如何配置RDB持久化机制2、RDB持久化机制的工作流程3、如何配置AOF持久化机制4、AOF持久化机制工作流程5、AOF Rewrite6、AOF和RDB同时工作
Redis的RDB和AOF持久化
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章，了解一下Markdown的基本语法知识。
1、如何配置RDB持久化机制
redis.conf文件，也就是/etc/redis]]></description><category></category></item><item><title><![CDATA[高性能、高可用缓存架构]]></title><link>https://blog.youkuaiyun.com/juded/article/details/93317927</link><guid>https://blog.youkuaiyun.com/juded/article/details/93317927</guid><author>juded</author><pubDate>Sat, 22 Jun 2019 13:33:42 +0800</pubDate><description><![CDATA[架构
方案设计要点
一、时效性数据
1、库存数据时效性要求高，采用缓存+数据库双写方案，实时更新缓存
2、商品概览数据时效性要求低，采用商品服务+消息对列 异步更新缓存
二、

...]]></description><category></category></item><item><title><![CDATA[Redis Replication运行流程及原理]]></title><link>https://blog.youkuaiyun.com/juded/article/details/90245438</link><guid>https://blog.youkuaiyun.com/juded/article/details/90245438</guid><author>juded</author><pubDate>Wed, 15 May 2019 21:25:58 +0800</pubDate><description><![CDATA[1、复制的完整流程
（1）slave node启动，仅仅保存master node的信息，包括master node的host和ip，但是复制流程没开始
master host和ip是从哪儿来的，redis.conf里面的slaveof配置的
（2）slave node内部有个定时任务，每秒检查是否有新的master node要连接和复制，如果发现，就跟master node建立socket网络连...]]></description><category></category></item><item><title><![CDATA[Redis：解决异步复制丢失、脑裂数据丢失状况]]></title><link>https://blog.youkuaiyun.com/juded/article/details/90245371</link><guid>https://blog.youkuaiyun.com/juded/article/details/90245371</guid><author>juded</author><pubDate>Wed, 15 May 2019 21:22:21 +0800</pubDate><description><![CDATA[异步复制导致的数据丢失
因为master -&gt; slave的复制是异步的，所以可能有部分数据还没复制到slave，master就宕机了，此时这些部分数据就丢失了
脑裂导致的数据丢失
脑裂，也就是说，某个master所在机器突然脱离了正常的网络，跟其他slave机器不能连接，但是实际上master还运行着
此时哨兵可能就会认为master宕机了，然后开启选举，将其他slave切换成了maste...]]></description><category></category></item><item><title><![CDATA[微服务架构]]></title><link>https://blog.youkuaiyun.com/juded/article/details/83316021</link><guid>https://blog.youkuaiyun.com/juded/article/details/83316021</guid><author>juded</author><pubDate>Tue, 23 Oct 2018 21:49:38 +0800</pubDate><description><![CDATA[http://www.martinfowler.com/articles/microservices.html
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in i...]]></description><category></category></item><item><title><![CDATA[单体架构]]></title><link>https://blog.youkuaiyun.com/juded/article/details/83315980</link><guid>https://blog.youkuaiyun.com/juded/article/details/83315980</guid><author>juded</author><pubDate>Tue, 23 Oct 2018 21:47:47 +0800</pubDate><description><![CDATA[一个归档包（例如war格式）包含了应用所有功能的应用程序，我们通常称之为单体应用。架构单体应用的方法论，我们称之为单体应用架构。
缺点：


复杂性高
以笔者经手的一个百万行级别的单体应用为例，整个项目包含的模块非常多，模块的边界模糊，依赖关系不清晰，代码质量参差不齐，混乱地堆砌在一起……整个项目非常复杂。每次修改代码都心惊胆战，甚至添加一个简单的功能，或者修改一个BUG都会造成隐含的缺陷。


...]]></description><category></category></item><item><title><![CDATA[hashmap、concurrenthashmap原理解析]]></title><link>https://blog.youkuaiyun.com/juded/article/details/79913974</link><guid>https://blog.youkuaiyun.com/juded/article/details/79913974</guid><author>juded</author><pubDate>Thu, 12 Apr 2018 15:03:24 +0800</pubDate><description><![CDATA[hashmap原理解析 
concurrenthashmap原理解析 
concurrenthashmap原理解析二 
hash方法]]></description><category></category></item><item><title><![CDATA[一、ExtensionLoader扩展点加载类解析（dubbo）]]></title><link>https://blog.youkuaiyun.com/juded/article/details/79156368</link><guid>https://blog.youkuaiyun.com/juded/article/details/79156368</guid><author>juded</author><pubDate>Thu, 25 Jan 2018 18:11:33 +0800</pubDate><description><![CDATA[扩展点特性参考扩展点加载官方文档。



大白话

问：扩展点加载到底是什么东东？

首先得说一下dubbo的基本设计原则


  1、采用 Microkernel + Plugin 模式，Microkernel 只负责组装 Plugin，Dubbo 自身的功能也是通过扩展点实现的，也就是 Dubbo 的所有功能点都可被用户自定义扩展所替换。
  
  2、采用 URL 作为配置信息的统一格式，所]]></description><category></category></item><item><title><![CDATA[01 困境]]></title><link>https://blog.youkuaiyun.com/juded/article/details/79118348</link><guid>https://blog.youkuaiyun.com/juded/article/details/79118348</guid><author>juded</author><pubDate>Sun, 21 Jan 2018 10:40:35 +0800</pubDate><description><![CDATA[摘自《把时间当做朋友》一书。


  本书主张一个人必须在开启心智、提高思考能力之之后才能用正确的方法做正确的事情。




前言

无论是谁，都最终在某一刻意识到时间的珍贵，并且几乎注定会因懂事太晚而有些后悔。病了要投医，病急了可能会乱投医。可是书店里各种各样关于“时间管理”的书籍多半无事于补—-至少这是我自己的经验。

一方面是束手无策，另一方面是时间无情的流逝，恶性循环早已形成。

要做的事]]></description><category></category></item><item><title><![CDATA[Java中classLoader浅析]]></title><link>https://blog.youkuaiyun.com/juded/article/details/78963006</link><guid>https://blog.youkuaiyun.com/juded/article/details/78963006</guid><author>juded</author><pubDate>Wed, 03 Jan 2018 16:51:57 +0800</pubDate><description><![CDATA[java classloader]]></description><category></category></item><item><title><![CDATA[一些设计上的基本常识]]></title><link>https://blog.youkuaiyun.com/juded/article/details/78936034</link><guid>https://blog.youkuaiyun.com/juded/article/details/78936034</guid><author>juded</author><pubDate>Sat, 30 Dec 2017 09:10:23 +0800</pubDate><description><![CDATA[基本常识]]></description><category></category></item><item><title><![CDATA[魔鬼在细节]]></title><link>https://blog.youkuaiyun.com/juded/article/details/78928435</link><guid>https://blog.youkuaiyun.com/juded/article/details/78928435</guid><author>juded</author><pubDate>Fri, 29 Dec 2017 09:54:46 +0800</pubDate><description><![CDATA[细节]]></description><category></category></item><item><title><![CDATA[ReentrantLock源码解析]]></title><link>https://blog.youkuaiyun.com/juded/article/details/72764685</link><guid>https://blog.youkuaiyun.com/juded/article/details/72764685</guid><author>juded</author><pubDate>Fri, 26 May 2017 11:09:35 +0800</pubDate><description><![CDATA[Lock特性lock接口提供synchronized关键字不具备的主要特性
  特性
  描述  尝试非阻塞的获取锁
  当前线程尝试获取锁，如果这一时刻锁没有被其他线程获取到，则成功获取并持有锁
  能被中断的获取锁
  与synchronized不同，获取到锁的线程能响应中断，当获取到锁的线程被中断时，中断异常会被抛出，同时锁会被释放
  超时获取锁
  在截止指定的时间内获取锁，截止时间到了仍]]></description><category></category></item><item><title><![CDATA[堆排序]]></title><link>https://blog.youkuaiyun.com/juded/article/details/72598278</link><guid>https://blog.youkuaiyun.com/juded/article/details/72598278</guid><author>juded</author><pubDate>Sun, 21 May 2017 14:28:17 +0800</pubDate><description><![CDATA[public class HeapSort {    public static void main(String[] args) {
         int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; 
         heapSort(array);         for(int a : array){]]></description><category></category></item><item><title><![CDATA[归并排序]]></title><link>https://blog.youkuaiyun.com/juded/article/details/72582311</link><guid>https://blog.youkuaiyun.com/juded/article/details/72582311</guid><author>juded</author><pubDate>Sat, 20 May 2017 17:34:44 +0800</pubDate><description><![CDATA[public class RecursiveMergeSort {    public static void main(String[] args) {  
        int[] data = new int[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 };  
        print(data,"init");  
//        sort(data);]]></description><category></category></item></channel></rss>