目录
服务器端程序的演进过程
- 阶段一:静态服务器
- 早期的服务器状态,安装固定的内容,让用户访问
- 功能单一,如果不修改代码,内容是不会变的,只能做信息的呈现或输出。
- 阶段二:普通动态服务器
- 网页中的数据可能来自数据库,数据库中的数据可以在后台中进行修改。
- 实现不修改页面代码,但是变化页面内容的效果。
- 因为有了数据库的支持,动态网站开始支持登录注册,增删改查功能。
- 阶段三:以用户共享内容为主的互联网生态
- 随着互联网的普及,个人的社交需求提升出现了很多由用户贡献内容的网站。
- 微博,抖音,淘宝,大众点评或类似的网站
- 随着互联网的普及,个人的社交需求提升出现了很多由用户贡献内容的网站。
- 阶段四:微服务时代
- 随着用户的增加,各种开发的增高,要求我们的服务器在繁忙的情况下,也需要快速的做出响应
- 用户体验必须保证,这样就要求我们的项目有下面有三个目标
- 微服务的“三高”
- 高并发:很多人访问网站也必须能够工作,不能失能
- 高可用:可用性好,全年365天每天24小时随时可以访问,不能因为个别服务器的异常,导致整个项目瘫痪
- 高性能:当有用户访问时响应的速度要尽量的快,及时并发高,也要快速响应
- 微服务的“三高”
Java服务器项目分类
常见的java开发的项目可以分为两大类
1.企业级应用
- 一般指一个企业或机构内部使用的网站或服务器
- 使用人群比较固定,并不向全国乃至全世界开放
- 例如:商业,企事业单位,医疗,金融,军事,政府等
- 所以这个项目没有代替品,对”三高“没有强烈要求
- 企业级项目一般会在权限和业务流程方面设计的比较复杂
2.互联网应用
- 能够向全国乃至全世界开放的网站或服务器应用程序
- 我们手机中安装的app大部分都是互联网应用
- 微信,支付宝,京东,淘宝,饿了么,美团,抖音...
- 他们应为商业竞争等原因,对服务器的性能有非常高的要求,就是我们之前提到的“三高”,但是虎粮王应用一般没有权限和业务非常复杂的需求。
综上所述,企业级应用和互联网应用偏重点不同
在当今java开发业界中,基本规律如下:
- 如果开发的是企业级,使用单体架构的情况比较多
- 如果开发的是互联网应用,使用微服务架构的情况比较多
什么是微服务?
由Martin Fowler(马丁·福勒)提出的微服务的概念
微服务是以单一应用程序构成的小服务,自己拥有自己的行程和轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通信。同时服务会使用最小的规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现。
微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现。
简单来说,微服务就是将一个大型项目的各个业务代码,拆分成多个互不相干的小项目,而这些小项目专心的完成自己的功能,而且可以调用别的小项目的方法,从而完成整体功能
京东\淘宝这样的大型互联网应用程序,基本每个操作都是一个单独的微服务在支持:
- 登录服务器
- 搜索服务器
- 商品信息服务器
- 购物车服务器
- 订单服务器
- 支付服务器
- 物流服务器
- .....
为什么需要微服务?
单体项目
一旦服务器忙,所有业务都无法快速响应
即使添加了服务器,也不能很好的解决这个问题
不能很好的实现"高并发,高可用,高性能"
但是因为服务器数量少,所以成本低,适合并发访问少的项目
微服务项目
每个业务专门一批人来负责,业务之间互不影响
在某个模块性能不足时,针对这个模块添加服务器改善性能
万一一个服务器发生异常,并不会影响整体功能
但是完成部署的服务器数量多,成本高,需要较多投资,能够满足"高并发,高可用,高性能"的项目。