• 理解Spring Cloud Hystrix

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

    hystrix-logo-tagline-640

    Spring Cloud“全家桶”风头正劲,Hystrix作为服务容错保护组件也是挺有名气。最近我有在看一些Spring Cloud的内容,其中就包括Hystrix。这里我打算从宏观理论和微观实现两个部分来分析Hystrix。

    1. Hystrix的宏观知识

    首先是宏观理论了,先抛出两个问题。Hystrix的设计目的是什么?应该怎么完成这些目标?针对第一个问题,我们首先需要明确的是微服务架构应该是有一定的容错性的,而服务不可用的问题是客观存在的。而且这些服务错误常常会恶化和扩散,结果造成更严重的负面影响。所以在无法绝对保证服务可用性的前提下,我们需要一种机制来保护服务错误。

    Hystrix的作用主要体现在一下几个方面,

    • 保护和控制底层服务的高延迟和失效对上层服务的影响。
    • 避免复杂分布式中服务失效的雪崩效应。在大型的分
    【查看更多】
  • Spring Session加Redis

    本文出自:【InTheWorld的博客】

    redis-spring-boot

    session是一个非常常见的概念。session的作用是为了辅助http协议,因为http是本身是一个无状态协议。为了记录用户的状态,session机制就应运而生了。同时session也是一个非常老的概念了,使用session的方法也是多种多样。就Java来说,servlet的标准本身是包含session的,Tomcat会把session的信息存储在服务器内存里,Request提供了获取session的方法。

    然而,前文所述的session机制其实是有不少缺点的。首先就是session数据没有一定的持久化机制,而且难以实现应用服务器的水平扩展。在负载均衡器 + 应用服务器集群的架构中,session共享是一个基本的要求。在Spring生态圈里,也有Spring session完成session存储和共享的功能。Spring Session支持把session信息以各种形式存储,比如数据库或者Redis。个人认为,Redis比RDBMS更加适合session数据的存储。首先,session数据都… 【查看更多】

  • 使用JWT实现安全认证——基于Angular2和Spring

    本文出自:【InTheWorld的博客】

    json_web_token

    全认证一直都是应用非常重要的一环,并且随着移动app和SPA的不断发展,基于token的认证正不断成为主流。JSON Web Tokens是一种简单好用的认证方法,一个JWT类型的token一般由三部分组成,分别是Header、Payload和Signature,当然有时候会加一个token前缀。

    以下图为例,分析一下JWT的结构:

    image

    首先,前面的“Bearer ”是token前缀,后面的内容中由两个”.”分割成为了三份。它们便分别对应Header,Payload和Signature。

    • Header记录token算法和类型的字段
    • Payload:记录所有数据的JSON对象,真正有效的数据都包含在这里
    • Signature:Signature是签名动作发生的地方,为了得到签名,我们使用Base64URL编码头部,接着使用Base64URL编码payoad,然后
    【查看更多】
  • MongoDB与Spring Boot

    本文出自:【InTheWorld的博客】

    MongoDB作为一种NoSQL数据库产品,其实已经非常著名了。去年,由于MongoDB安全认证的薄弱,上万家公司中招。虽然是一则负面新闻,但是也从侧面说明了MongoDB的流行程度。下图是DB-Engines统计的2017年5月全球数据库引擎使用排名。从图中可以看出,mongoDB位列总榜第五,非关系数据库第一,非常靠前的排名。

    db_engine_ranking

    我个人对mongoDB并不是非常熟悉,但是经过一段时间的了解,对mongoDB的特性还是有了一些简单的理解,这里记录一二。

    1. 首先,mongoDB作为一种非关系型数据库,它最大的特点就是Schema非常的弱。换而言之,mongoDB的升级以及应用的重构会变得比较简单。
    2. 其次,mongoDB使用了文档型的存储结构,数据接口则非常接近于JSON。JSON这种数据结构不仅简单而且也是非常流行的网络传输格式。
    3. 此外,mongoDB充分考虑了数据库
    【查看更多】