十年开发经验,对微服务的学习总结

十年开发经验,对微服务的学习总结

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

问题:微服务有什么用?

解答:解决单体应用规模增加时带来的问题。

微服务 vs 单体应用

  • 单体应用将所有功能放在一个单一进程中
  • 微服务把每个功能元素放进一个独立的服务中,在多个服务器复制,跨服务器统一管理
  • 单体应用优点:稳定,性能,部署
  • 单体应用缺点:中心化,耦合,学习成本,伸缩性,持续交付
  • 适情况选择单体应用或微服务,不要为了技术而技术

分布式系统如何解释?

简单来说,分布式系统就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。集中式系统集中式系统就是把所有的程序、功能都集中到一台主机上,从而往外提供服务的方式。比如,我们主机的PC电脑,或者手机,我们把各种软件都安装在一台机子上,当我需要什么功能,我就从这台机子上去获取。再比如,我们在学生时代做的课程设计或者开发时的小应用,我们把Web服务器、数据库等都会安装到一台电脑上。好处是,易于理解、方便维护,想要的东西我都放到了一个地方,东西好找啊。当然弊端也是显而易见的,如果这台机子崩了,或者硬盘坏了,那相当与整个系统就奔溃了,而且如果备份也是在这个硬盘上,那相当于招了灭顶之灾。

Web 编程基础

静态Web

概述:静态web内容由web服务器文件系统提供,路径为文件系统的路径,常见的静态web内容有,html,css,js,jpeg等

常用的静态web服务器

  • Apache Http Server
  • Nginx
  • Micrsoft lls

静态web优化

  • http资源变化,如 last-modified<--->if-modified-since
  • http资源缓存,如ETag<---> if-None-Match

动态Web

概述: 与静态web不同,请求内容通过服务器计算而来的

流行的java web服务器

  • servlet容器(tomcat,jetty)
  • 非servlet容器(undertow)

动态技术/架构演变

  • CGI (common gateway interface)
  • Servlet (server applet)
  • JSP (java server page)
  • MVC (model - view - controller)

问题:mvc 的执行流程?

  1. 用户通过客户端发送HTTP请求,传至web服务器如tomcat
  2. servlet(实际是dispacherservlet)充当controller处理分发请求,传至model层
  3. model层包括了一系列的逻辑处理,包括数据库操作,最后返回一个java beans
  4. dispachersevlet将结果返回给服务器,服务器返回处理好的view给客户端
  5. 客户端渲染展示给用户Java学习圈子

模板引擎

velocity: apache 产品,现已不维护

jsp: 使用较广泛,编译流程:.jsp-->.java -->.class 。内部可嵌入java语法,导致耦合度较高

themleaf: 新模板引擎

freemarker: 较稳定的一类


REST理论基础

  • 来源:来自于Roy Thomas Fielding 2000年的博士论文 - 《Architectural Styles and the Design of Network-based Software Architectures》
  • 概念:REST = RESTful =Representational State Transfer,一种软件架构风格
  • 架构属性:性能,可伸缩性,统一接口简化性,组件可修改性,可靠性等等

Springboot Rest 核心接口

定义相关

  • @Controller
  • @RestController

映射相关

  • @RequestMapping(path={映射路径}, produces = {返回response的类型}, consumes={接收request的类型})
  • @PathVariable

请求相关

  • @RequestParam
  • @RequestBody
  • @RequestHeader
  • @CookieValue
  • RequestEntity

响应相关

  • @ResponseBody
  • ResponseEntity

接口默认返回xml只需添加maven节点


image.png

Servlet 的在web中应用

什么是servlet?

是一种基于java技术的web组件,由容器管理,用于生成动态内容,由java web 服务器加载执行

什么是servlet容器?

Servlet 容器,有时候也称作为 Servlet 引擎,作为Web服务器或应用服务器的一部分。通过请求和响应对话,提供Web 客户端与 Servlets 交互的能力。容器管理Servlets实例以及它们的生命周期。Java学习圈子

Servlet 历史发展如何?

1997年六月,Servlet 1.0 版本发行,最新版本 Servlet 4.0 处于研发状态。

Servlet生命周期

  • 初始化:当容器第一次执行时,servlet### init(servletConfig) 方法执行
  • 请求处理:Http请求到达容器时,servlet### service(ServletRequest req,ServletResponse rep)方法执行
  • 销毁:当容器关闭时,容器将会调用Servlet### destroy() 方法被执行,销毁当前Servlet

Fileter生命周期

  • 初始化:当容器启动时,Filter#init(FilterConfig)方法被执行,初始化当前Filter
  • 请求处理:当http请求到达容器是,Filter#doFilter(ServletRequest,ServletResponse,FilterChain) 方法被执行,可用来拦截请求,所以会在servlet请求处理之前调用
  • 销毁: 当容器关闭时,容器将会调用Filter#destroy 方法被执行,销毁当前Filter

Listener 生命周期

  • 监听请求:当监听到Http请求时,Listener## requestInitialized(ServletRequestEvent sre)方法执行一次
  • 销毁:当请求执行完毕,并返回结果时,Listener## requestDestroyed(ServletRequestEvent sre) 执行一次

Http请求生命周期大致为:

  1. Listner--> requestInitialized 方法
  2. Filter --> init 初始化方法
  3. Filter --> doFilte 处理方法
  4. Servlet --> init 初始化方法
  5. servlet --> service 方法
  6. listener --> destroy 方法

粉丝福利

十年开发经验,对微服务的学习总结
十年开发经验,对微服务的学习总结

上图中的资料都是我精心录制视频,感兴趣的可以加入我的Java学习圈子 免费获取。希望能够在你接下来即将应对的的面试过程中能够尽到一份绵薄之力。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容