学习记录之微服务
阶段一:静态服务器
早期的服务器状态,安装好一些固定内容,让用户访问
功能单一,如果不修改代码,内部是不会变的,只能做信息的呈现 和输出
阶段二:普通动态服务器
网页中的数据可能来自数据库,数据库中的数据可以在后台中进行修改
实现不修改页面代码,但是变化页面内容的效果
因为有了数据库的支持,动态网站开始支持登录注册,增删改查功能
阶段三:用户共享内容的互联网生态
随着互联网的普及,个人的社交需求提升,出现了很多有用户贡献内容的网站
微博,抖音,淘宝,大众点评或类似的网站
阶段四:微服务时代
随着用户的增加,各种并发的增高,要求我们的服务器在繁忙的情况下,也需要快速的做出反应,用户体验必须保证,这样就要求我们项目有下面三个目标.
高并发,高可用,高性能
高并发;很多人同时访问这个网站,这个网站不能失能
高可用:全年365天每天24小时随时访问随时可用9
高性能:在服务器压力大,并发高时,要有快速的响应
简称微服务三高
Java服务器项目分类
现在市面上常见的java开发的项目可以分为两大类
1.企业级应用:
一般指一个企业或机构内部使用的网站或服务器应用程序,使用的人群比较固定,并不向全国乃至全世界开放,例如:商场企事业单位,医疗,金融,军事政府机关等,所以这个项目没有代替品,对"三高"没有强烈要求
企业级项目一般会在权限和业务流程方面设计的比较复杂
2.互联网应用
能够向全国乃至全世界开放的网站或服务器应用程序.我们手机中安装的App大部分都是互联网应用,比如: 微信,支付宝,京东,爱奇艺,高德地图等
他们因为商业竞争等原因,对服务器的性能有非常高的要求,就是我们提到的"三高",但是互联网应用一般没有权限和业务非常复杂的需求.
综上所述,企业级应用和互联网应用的偏重点不同,
在当今java开发业界中基本规律如下
-如果开发的是企业级应用,使用单体架构的情况比较多
-如果开发的是互联网应用,使用微服务架构的情况比较多
微服务概述
什么是微服务
微服务的概念是有Martin Fowler(马丁. 福勒),在2014年提出的
微服务是由单一应用陈旭构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的部署,与其他服务使用 HTTP API 通信.同时服务会使用最小的规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现
简单来说:微服务就是将一个大型项目的各个业务代码,拆分为多个互不相干的小项目,而这些小项目专心的完成自己的功能,而且可以调用别的小项目的方法,从而完成整体功能.
京东\淘宝这样的大型互联网应用程序,基本每个操作都是一个单独的微服务在支持:
登录服务器
搜索服务器
商品信息服务器
购物车服务器
订单服务器
支付服务器
物流服务器
.....
怎么搭建微服务项目
在微服务概念提出之前(2014年),每个厂商都有自己的解决方案
但是Martin Fowler(马丁·福勒)提出了微服务的标准之后,为了技术统一和兼容性,很多企业开始支持这个标准
现在我们开发的微服务项目,大多数都是在马丁·福勒标准下的
如果我们自己编写支持这个标准的代码是不现实的,必须通过现成的框架或组件完成满足这个微服务标准的项目结构和格式
当今程序员要想快速开发满足上面微服务标准的项目结构,首选SpringCloud
Spring Cloud
什么是SpringCloud
SpringCloud是由Spring提供的一套能够快速搭建微服务架构程序的框架集
框架集表示SpringCloud不是一个框架,而是很多框架的统称
SpringCloud就是为了搭建微服务架构项目出现的
有人将SpringCloud称之为"Spring全家桶",广义上指代Spring的所有产品
Spring Cloud的内容
内容的提供者角度:
Spring自己编写的框架或软件
Netflix(奈非);早期提供了全套的微服务架构解决方案
alibaba(阿里巴巴):新版本的SpringCloudAlibaba正在迅速占领市场(推荐使用)
功能上分类
-微服务的注册中心
-微服务间的调用
-微服务的分布式事务
-微服务的限流
-微服务的限流
-微服务的网关
......