饿了么:基于SpringBoot的Web层服务开发实战!

摘要

在饿了么各类业务和运营系统中,普遍使用了基于Token的认证机制。本次分享,介绍一个通用的、可扩展的SpringSecurity Filter支撑这些业务系统开发,在实际应用中取得了良好的效果。

包括以下内容:

1. 嵌入式Servlet容器的引擎的原理和机制

2. Spring MVC自动化配置的背后详情

视频内容

Spring Boot的设计目标

使Spring Framework的应用开发变得简单,容易上手。非侵入性地提供一套常用的配置,“非侵入性”保证了用户可以随时覆盖所有的默认配置。提供更多的基础性、非业务的功能(内置Web容器、权限认证机制、监控、应用配置管理等等),完全不依赖XML配置。

Spring Boot不能取代Spring Framework。想要用好Spring Boot,必须对Spring Framework有足够的知识。

基于Spring Boot的应用

独立可执行Jar;内置Servlet容器(Jetty/Tomcat/Undertow),不用部署war包;自动化配置机制,对常见的Spring基础组件(Data、Security、MVC、MQ…)提供“即开即用”的默认配置。

Cloud Friendly:脚本可定制,适配init.d/systemd;External Configuration灵活的配置注入机制;Actuator应用管理和监控。

Spring Boot是Spring Cloud的基础,它所有的特性就是为了让JAVA应用在当下的云环境中更容易地部署执行,实现微服务。

基于Token的认证机制

根据任意一种认证手段,如用户名+密码、手机号+验证码等方式生成Token。

我个人认为Token是为了取代现在传统的、基于session认证机制的一个机制。Token是一个灵活的解决方案,更适用于移动端开发。

因为传统基于session的机制非常限制应用程序水平的扩展,我们不得不去维护session的一致性,对当下云计算环境中的水平扩展有害。

基于Token的认证机制推荐标准是JWT。

应用场景

移动端用户认证解决方案;RESTful API开发;替代传统的基于Session的用户认证登录机制。

Talk is cheap.

Show me the code.

思考

如何强制收回一个有效的Token?

可以用redis,需要注意的是,一旦用了redis,就会有状态的维护和扩展的问题。

Token有效期设置多长合适?

这个问题需要根据业务场景、依据业务系统和类型去仔细考虑。

Token的缺点

当使用JWT的时候,很容易让开发人员在Token里面塞入太多的东西。Token的职责应该尽量单一,它只是用于做认证鉴权。不要基于Token做太多的业务逻辑,Token的体积不能太大。这在架构层面没有统一的解决方法,只是依赖于业务系统规则的约束。

Spring Boot是

打开Spring Cloud大门的钥匙

饿了么目前的服务治理已经有了成熟的现有框架,和Spring Cloud会有一些相关的冲突,这是我们业务系统的现状。基于Spring Boot,我们正在做的就是如何把Spring Boot改造成适合我们公司的框架。

饿了么业务的特点就是它的高峰和低峰期特别明显,对于所有系统的弹性要求非常高。我们的CTO一直在规划Cloud Native整体的架构。在我们内部有一个通用的API网关系统,它的认证鉴权系统是就是一套基于Token的可扩展的框架。这个网关系统,就是完全运行在Mesos平台之上的。

我今天的分享就到这里,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2017-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AndroidTv

Gradle 系列博客梳理系列博客博客概要后记

20040
来自专栏Java架构师历程

springcloud(二):注册中心Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是sp...

11810
来自专栏技术墨客

Jolokia架构介绍 原

    虽然jolokia是为了满足JSR-160的要求,但是他和JSR-160连接器有巨大的差异。其中最引人注目的区别是jolokia传递数据是无类型的数据(...

12130
来自专栏Linux 杂货铺

腾讯云携手CODING,云端IDE——Cloud Studio初体验

4月16日,腾讯云与CODING宣布达成战略合作,共同发布以腾讯云云服务器为基础的国内第一款完全基于云端的IDE工具:Cloud Studio的beta版本。

4.4K210
来自专栏乐百川的学习频道

使用MyJRebel获取免费的JRebel授权

在我们开发Java Web程序的时候,调试就是一个麻烦事情,每次更改类, 就需要重启服务器。对于Tomcat这样的小巧服务器来说,重启就重启吧,反正也就是几秒钟...

46060
来自专栏IT笔记

Grafana+Prometheus系统监控之webhook

概述 Webhook是一个API概念,并且变得越来越流行。我们能用事件描述的事物越多,webhook的作用范围也就越大。Webhook作为一个轻量的事件处理应用...

73830
来自专栏陈树义

数据库历险记(二) | Redis 和 Mecached 到底哪个好?

说起缓存框架,我们最常用的缓存框架有 memcached、Redis 这两个,但它们之间其实是有差异的。

11320
来自专栏24K纯开源

分享一款基于Qt5的故障波形分发软件

搬运自我的博客园:www.cnblogs.com/csuftzzk

26600
来自专栏Java架构

Spring Cloud 微服务的那点事总结

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。

45130
来自专栏纯洁的微笑

springcloud(二):注册中心Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是sp...

42070

扫码关注云+社区

领取腾讯云代金券