服务器端项目演进

服务器初期状态

最早的服务器就是安装部署了一些静态页面

功能非常单一,只能做信息的呈现和输出

服务器动态页面

后来因为业务和技术的发展,页面连接了数据库,页面中大部分数据来自于数据库中

用户的操作可以修改数据库的内容,这样在不修改页面代码的前提下,页面中的数据可能发生变化

这样的页面可以实现用户注册,登录,查询(基本增删改查)功能

用户贡献网页内容

进入21世纪,随着互联网进入千家万户,个人多社交需求的提升

出现了很多主要由用户贡献信息的网站

现在也有很多这样的网站

微博,抖音,淘宝,大众点评或类似的网站

微服务时代

随着用户量的增加,和各种新需求的出现,一个服务器应用程序不能支持网站的运行时

就需要多台服务器共同支持网站的运行

我们需要强大的服务器性能,支持各种网站的活动

达到"三高"的目标

"高并发,高可用,高性能"

Java服务器项目分类

现在市面上常见的java开发的项目可以分为两大类

1.企业级应用

一般指一个企业或机构内部使用的网站或服务器应用程序

包括的领域很多,包括并不限于:商业,企事业单位,医疗,军事,政府,金融等

这种项目的特征是访问人数不多,不是全国乃至全世界都需要使用的网站

因为人数比较少又没有替代品,所以不强烈要求三高

但是企业级项目一般会有比较复杂的权限设置和业务流程

2.互联网应用

指对全国乃至全世界开放的网站或服务器引用程序

我们手机中安装的app大部分都是互联网应用

微信,支付宝,京东,淘宝,饿了么,美团,抖音,qq音乐,爱奇艺,高德地图等

他们因为商业竞争等各种原因,对服务器性能有要求,也就是前面提到的"三高"

及时并发量非常大,程序也要正常运行,迅速响应

互联网应用一般业务和权限相对简单,但是要求"三高"

因为上述java项目的分类偏重点不同

在当今java开发的业界中,有下面的基本规律

  • 如果开发的是企业级应用,使用单体架构的情况比较多
  • 如果开发的是互联网应用,使用微服务架构的情况比较多

微服务概述

什么是微服务

微服务的概念是由Martin Fowler(马丁·福勒)在2014年提出的

微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现。

简单来说,微服务就是将一个大型项目的各个业务代码,拆分成多个互不干扰的小项目,而这些小项目专心完成自己的功能,而且可以调用别的小项目的方法,从而完成整体功能

京东\淘宝这样的大型互联网应用程序,基本每个操作都是一个单独的微服务在支持:

  • 登录服务器
  • 搜索服务器
  • 商品信息服务器
  • 购物车服务器
  • 订单服务器
  • 支付服务器
  • 物流服务器
  • .....

为什么使用微服务

左侧小餐馆就像单体项目

一旦服务器忙,所有业务都无法快速响应

即使添加了服务器,也不能很好的解决这个问题

不能很好的实现"高并发,高可用,高性能"

但是因为服务器数量少,所以成本低,适合并发访问少的项目

右侧的大餐厅就是微服务项目

每个业务有专门一批人负责,业务之间互不影响

能够针对的在性能不足的业务上添加服务器来改善性能,同时万一一个服务器异常,不会影响整体功能

但是服务器数量多,成本高,适合要要求"高并发,高可用,高性能"的项目

怎么搭建微服务项目

在微服务概念提出之前(2014年),每个厂商都有自己的解决方案

但是Martin Fowler(马丁·福勒)提出了微服务的标准之后,为了技术统一和兼容性,很多企业开始支持这个标准

现在业界中开发微服务项目,大多数都是在这个标准下的

如果我们自己编写支持这个标准的代码是不现实的,必须通过现成的框架或组件完成满足这个微服务标准的项目结构和格式

当今程序员要想快速完成微服务标准的程序,首选SpringCloud

Spring Cloud

什么是Spring Cloud

SpringCloud是由Spring提供的一套能够快速搭建微服务架构程序的框架集

框架集表示SpringCloud不是一个框架,而是很多框架的统称

SpringCloud是为了搭建微服务架构的程序而出现的

有人将SpringCloud称之为"Spring全家桶",广义上指代所有Spring的产品

SpringCloud的内容

从内容提供者角度

  • Spring自己编写的框架和软件
  • Netflix(奈非):早期提供了很多(全套)微服务架构组件
  • alibaba(阿里巴巴):新版本SpringCloud推荐使用(正在迅速占领市场)

课程中大量使用alibaba的微服务组件

从功能上分类

  • 微服务的注册中心
  • 微服务间的调用
  • 微服务的分布式事务
  • 微服务的限流
  • 微服务的网关
  • ......

5-2 SpringCloud | 微服务的更多相关文章

  1. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

  2. 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心

    在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...

  3. 从零开始,轻松搞定SpringCloud微服务系列

    本系列博文目录 [微服务]之一:从零开始,轻松搞定SpringCloud微服务系列–开山篇(spring boot 小demo) [微服务]之二:从零开始,轻松搞定SpringCloud微服务系列–注 ...

  4. 【微服务】之四:轻松搞定SpringCloud微服务-负载均衡Ribbon

    对于任何一个高可用高负载的系统来说,负载均衡是一个必不可少的名称.在大型分布式计算体系中,某个服务在单例的情况下,很难应对各种突发情况.因此,负载均衡是为了让系统在性能出现瓶颈或者其中一些出现状态下可 ...

  5. 【微服务】之五:轻松搞定SpringCloud微服务-调用远程组件Feign

    上一篇文章讲到了负载均衡在Spring Cloud体系中的体现,其实Spring Cloud是提供了多种客户端调用的组件,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使 ...

  6. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  7. java~springcloud微服务目录索引

    回到占占推荐博客索引 最近写了不过关于java,spring,微服务的相关文章,今天把它整理一下,方便大家学习与参考. java~springcloud微服务~目录索引 springcloud~服务注 ...

  8. SpringCloud微服务负载均衡与网关

    1.使用ribbon实现负载均衡ribbon是一个负载均衡客户端 类似nginx反向代理,可以很好的控制htt和tcp的一些行为.Feign默认集成了ribbon. 启动两个会员服务工程,端口号分别为 ...

  9. SpringCloud微服务之跨服务调用后端接口

    SpringCloud微服务系列博客: SpringCloud微服务之快速搭建EurekaServer:https://blog.csdn.net/egg1996911/article/details ...

  10. springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

    相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...

随机推荐

  1. [AcWing 87] 把字符串转换成整数

    点击查看代码 class Solution { public: int strToInt(string str) { int k = 0; while (k < str.size() & ...

  2. 『现学现忘』Git基础 — 18、Git对象的总结

    目录 1.Git操作最基本的流程 2.工作目录中文件的状态 3.Git效率说明 提示:前面三篇文章已经分别的对blob对象.tree对象.commit对象进行了详细的说明,这篇文章我们总结一下,Git ...

  3. C#/VB.NET 创建图片超链接

    超链接(Hyperlink)可以看做是一个"热点",它可以从当前Web页定义的位置跳转到其他位置,包括当前页的某个位置.Internet.本地硬盘或局域网上的其他文件,甚至跳转到声 ...

  4. 零基础学Java第一节(语法格式、数据类型)

    本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...

  5. Mathtype无限试用

    PS:本文方法参考网上搜集的内容,仅做记录. 首先,默认大家都已安装Mathtype软件.如果没装的话,安装下就行.建议安装Mathtype国际版软件,因为国产mathtype会延长失败.如果失败的话 ...

  6. 使用 gitbook 制作自己的 html 文档

    使用 gitbook 制作自己的 html 文档 步骤如下 npm install gitbook-cli -g // 全局安装 gitbook-cli <span style="te ...

  7. python操作MySQL与MySQL补充

    目录 python操作MySQL 基本使用 SQL注入问题 二次确认 视图 触发器 事务 存储过程 函数 流程控制 索引 练习 python操作MySQL python中支持操作MySQL的模块很多, ...

  8. MongoDB 设置用户和密码

    每日一句 Zeal without knowledge is fire without light. 没有知识的热忱犹如火之无光. 给每个数据库设置单独的管理员 我们除了可以设置数据库的超级管理员以外 ...

  9. CF Divan and Kostomuksha

    题意:NKOJ CF 思路:首先发现贪心不了.因此dp.然后这题需要维护的就\(g_i\)和\(sum{g_i}\) 状态:\(dp[i]\): 当前最后一个为\(g_i\)的最大值 \(dp[i]= ...

  10. WC2019

    好题啊! 数树 \(\text{opt = 0, 6 pts.}\) 显然答案为 \(y^{n-|E_1∩E_2|}\) . \(\text{opt = 1, 47 pts.}\) \[\sum_{E ...