多数微服务为什么选择Zookeeper

了解微服务的小伙伴都应该知道Zookeeper,Zookeeper是一个分布式的、开源的分布式应用程序协调服务。
现在比较流行的微服务框架Dubbo、Spring Cloud都可以使用Zookeeper作为服务发现与注册中心。但是,为什么Zookeeper就能实现服务发现和注册呢?

more >>

权限架构设计那些事

前言
    权限管理是所有后台系统都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄漏等问题。
    公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终端。

more >>

最强java Redis客户端

为什么要在Java分布式应用程序中使用缓存?
在提高应用程序速度和性能上,每一毫秒都很重要。根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有53%的手机用户会离开。

more >>

浅谈lambda表达式

Java8其中一个很重要的新特性就是lambda表达式,允许我们将行为传到函数中。想想看,在Java8之前我们想要将行为传入函数,仅有的选择就是匿名内部类。Java8发布以后,lambda表达式将大量替代匿名内部类的使用,简化代码的同时,更突出了原来匿名内部类中最重要的那部分包含真正逻辑的代码。尤其是对于做数据的同学来说,当习惯使用类似scala之类的函数式编程语言以后,体会将更加深刻。现在我们就来看看Java8中lambda表达式的一些常见的写法。

more >>

如何优雅处理代码中Null值引起的BUG?

写在前面
    在开发中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不到头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。
    有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此篇文章,总结了几种关于空值的处理手法,希望对读者有帮助。

more >>

高并发下的接口幂等性如何实现

    实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如:

  • 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。
  • 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统BUG重发,也应该只扣一次钱。
  • 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的
  • 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。
        等等很多重要的情况,这些逻辑都需要幂等的特性来支持。

more >>

如何干掉SQL注入

    简介
        文章主要内容包括:

  • java持久层技术/框架简单介绍
  • 不同场景/框架下易导致SQL注入的写法
  • 如何避免和修复SQL注入

more >>

Redis的各项功能,都解决了哪些问题?

    首先,先看一下Redis是一个什么东西。官方简介解释到:
        Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings、lists、hashes、sets、sortedsets、bitmaps、hyperloglogs和geospatial indexes等数据类型。它还内建了复制,lua脚本,LRU,事务等功能,通过Redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等待。

more >>