专栏首页IT大咖说饿了么:基于SpringBoot的Web层服务开发实战!

饿了么:基于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),作者:孙立伟

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 阿里算法专家:一个面向开发者的智能对话平台

    内容来源:2018 年 08 月 05 日,阿里巴巴算法专家唐呈光在“人工智能技术沙龙(杭州站)”进行《小蜜智能对话开发平台》演讲分享。IT 大咖说(微信id:...

    IT大咖说
  • 对话机器人:除了算法,还需要考虑哪些?

    摘要 人工智能这个行业并不是纯算法论,算法固然重要,但是算法之外的东西对于一个创业公司来说会更重要。今天的分享会让大家了解到,机器人虽然是算法核心的应用,但在现...

    IT大咖说
  • 送给前端的你:可视化快速生成模拟数据服务——Easy Mock

    ? 内容来源:2017年11月18日,大搜车前端工程师高攀在“2017中国开源年会”进行《Easy Mock 接口数据模拟服务》演讲分享。IT 大咖说(微信i...

    IT大咖说
  • Linux基础(day50)

    12.10 Nginx访问日志 Nginx访问日志目录概要 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索log_...

    运维小白
  • 干货|6个牛逼的基于Vue.js的后台控制面板,接私活必备

    JavaEE擅长的就是企业级应用,作为一个Java程序员,如果想自己徒手撸一个ERP、WMS之类的系统还是有一点挑战的,不过今天松哥要给大家介绍几款牛逼的基于V...

    江南一点雨
  • 用python记录运行pid,并在需要时

      我在跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而cpu占用很低,所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环,或直...

    py3study
  • 一日一技:在 Python 中编写抽象类

    从abc模块导入ABC类,和abstractmethod抽象方法装饰器。基于ABC类可以实现一个抽象类。通过@abstractmethod装饰一个方法,让它成为...

    青南
  • 落魄“贵族”Nuance想东山再起?太难

    镁客网
  • Linux系列教程(九)——Linux常用命令之网络和关机重启命令

      前一篇博客我们讲解了Linux压缩和解压缩命令,使用的最多的是tar命令,因为现在很多源码包都是.tar.gz的格式,通过 tar -zcvf 能完成解压。...

    IT可乐
  • SAP中ABAP格式与JSON格式互转方法研究

    一、JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

    matinal

扫码关注云+社区

领取腾讯云代金券