【服务器端程序的演进过程】

news2025/1/22 23:37:30

目录

1 服务器端程序的演进过程

阶段一:静态服务器

阶段二:普通动态服务器

阶段三: 以用户共享内容为主的互联网生态

阶段四: 微服务时代(有高并发需求或特征的网站)

2 Java服务器项目分类

3 微服务概述

3.1 什么是微服务

3.2 为什么需要微服务

3.3 怎么搭建微服务项目

4 Spring Cloud

4.1 什么是SpringCloud

4.2 Spring Cloud的内容

5 注册中心Nacos

5.1 什么是Nacos

5.2 Nacos的下载


1 服务器端程序的演进过程

阶段一:静态服务器

早期的服务器状态,编写好一些固定内容,让用户访问

功能单一,如果不修改代码,内容是不会变的,只能做信息的呈现或输出

阶段二:普通动态服务器

网页中的数据可能来自数据库,数据库中的数据可以在后台中进行修改

实现不修改页面代码,但是变化页面内容的效果

因为有了数据库的支持,动态网站开始支持登录注册,增删改查功能

阶段三: 以用户共享内容为主的互联网生态

随着互联网的普及,个人的社交需求提升

出现了很多由用户贡献内容的网站

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

阶段四: 微服务时代(有高并发需求或特征的网站)

随着用户的增加,各种并发的增高,要求我们的服务器在繁忙的情况下,也需要快速的做出响应

用户体验必须保证,这样就要求我们的项目有下面三个目标

高并发,高可用,高性能

高并发:很多用户同时访问这个服务器,这个服务器不能失能

高可用:全年365天每天24小时都可以访问,不能因为个别服务器的异常,导致整个项目的瘫痪

高性能:当用户访问服务器时,响应速度要尽量的快,即使并发高,也要有正常的响应速度

微服务的"三高"

2 Java服务器项目分类

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

1.企业级项目

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

使用的人群比较固定,并不向全国乃至全世界开放

例如,商业,企事业单位,医疗,金融,军事,政府机关等

所以这个项目没有代替品,对"三高"没有强烈要求

企业级项目一般会在权限和业务流程方面设计的比较复杂

2.互联网项目

能够向全国乃至全世界开放的网站或服务器应用程序

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

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

它们因为商业竞争等原因,对服务器的性能有非常高的要求,就是我们之前提到的"三高"

但是互联网应用一般没有权限和业务非常复杂的需求

综上所述,企业级应用和互联网应用的偏重点不同

在当今java开发业界中,基本规律如下

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

3 微服务概述

3.1 什么是微服务

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

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

 

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

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

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

3.2 为什么需要微服务

 

左侧小餐馆就像单体项目

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

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

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

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

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

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

在某个模块性能不足时,针对这个模块添加服务器改善性能

万一一个服务器发生异常,并不会影响整体功能

但是完成部署的服务器数量多,成本高,需要较多投资,能够满足"高并发,高可用,高性能"的项目

3.3 怎么搭建微服务项目

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

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

现在我们开发的微服务项目,大多数都是在马丁·福勒标准下的

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

当今程序员要想快速开发满足上面微服务标准的项目结构,首选SpringCloud

(cloud :云朵)

4 Spring Cloud

4.1 什么是SpringCloud

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

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

SpringCloud就是为了搭建微服务架构项目出现的

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

4.2 Spring Cloud的内容

内容的提供者

  • Spring自己提供的开发出来的框架或软件
  • Netflix(奈非):早期的很长一段时间,提供了大量的微服务解决方案
  • alibaba(阿里巴巴):新版本的SpringCloudAlibaba正在迅速占领市场(推荐使用)

功能上分类

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

5 注册中心Nacos

5.1 什么是Nacos

Nacos是Spring Cloud Alibaba提供的一个软件

这个软件主要具有注册中心和配置中心(课程最后讲解)的功能

我们先学习它注册中心的功能

微服务中所有项目都必须注册到注册中心才能成为微服务的一部分

注册中心和企业中的人力资源管理部门有相似

当前微服务项目中所有的模块,在启动前,必须添加注册到Nacos的配置

所谓注册,就是将自己的信息,提交到Nacos来保存

5.2 Nacos的下载

https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.zip

国外网站,下载困难可以多试几次

5.3 Nacos的启动

因为Nacos是java开发的

我们要启动Nacos必须保证当前系统配置了java环境变量

简单来说就是要环境变量中,有JAVA_HOME的配置,指向安装jdk的路径

确定了支持java后,就可以启动Nacos了

 

cmd结尾的文件是windows版本的

sh结尾的文件是linux和mac版本的

startup是启动文件,shutdown是停止文件

Windows下启动Nacos不能直接双击cmd文件

需要在dos窗口运行

在当前资源管理器地址栏输入cmd

E:\\tools\\nacos\\bin>startup.cmd -m standalone

startup.cmd -m standalone

startup.cmd:windows启动nacos的命令文件

-m 表示要设置启动参数

standalone:翻译为标准的孤独的,意思是正常的使用单机模式启动

运行成功默认占用8848端口,并且在代码中提示

如果不输入standalone运行会失败

如果报了

"please set JAVA_HOME......."

表示当前项目没有配置java环境变量(主要是没有设置JAVA_HOME)

如果运行没有报错

打开浏览器输入地址

http://localhost:8848/nacos

 

 

如果是首次访问,会出现这个界面

登录系统

用户名:nacos

密码:nacos

登录之后可以进入后台列表

不能关闭启动nacos的dos窗口

我们要让我们编写的项目注册到Nacos,才能真正是微服务项目

个人主页:居然天上楼

感谢你这么可爱帅气还这么热爱学习~~

人生海海,山山而川

你的点赞👍 收藏⭐ 留言📝 加关注✅

是对我最大的支持与鞭策

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#获取计算机详细的软件和硬件信息

利用System.Management提供的类可以用于读取本地计算机设备的各种数据,包括操作系统、软件、硬件的各种详细信息,内容很丰富。 System.Management的命名空间下,ManagementObjectSearcher类用于查询特定类型的设备,ManagementObjec…

转行做“程序员”很难?这里有几个建议...

“是什么?为什么?怎么样?”的灵魂三连问在我们生活中比比皆是,目的是为了清晰思考和看到事物的本质。对于编程学习也是一样,需要带着疑问从本质上去学习编。 本人是某985高校的本硕连读,非计算机科班出身&…

利器 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

1080469 14.7 KB 上两篇文章介绍了自动遍历的测试需求、工具选择和 AppCrawler 的环境安装、启动及配置文件字段基本含义,这里将以实际案例更加细致的说明配置文件的用法和一些特殊场景的处理。 下面我们继续之前的例子,在雪球搜索框输入搜索内容后的页面…

CloudFlare系列--功能介绍与常用配置

原文网址:CloudFlare系列--功能与特性的介绍_IT利刃出鞘的博客-CSDN博客 简介 本文介绍CloudFlare的功能与常用的配置。 功能介绍 CloudFlare是世界最强的网络服务商。它可以提供如下服务: 防御DDoS攻击 世界最强防御DDos攻击的厂商。域名注册 世界最…

JavaWeb语法四:多线程案例

目录 1.单例模式 1.1:饿汉模式 1.2:懒汉模式 2.阻塞式队列 2.1:生产者消费者模型 2.2:阻塞队列的模拟实现 3.线程池 3.1:标准库中的线程池 3.2:模拟实现线程池 前言:前一篇我们讲了线程不安全的原因…

SAP UI5 里 FlexBox 的使用方法

ScrollContainer 的使用方式: ScrollContainer 是一个控件,可以在有限的屏幕区域内显示任意内容,并提供滚动以使所有内容都可访问。注意,为了避免影响用户使用体验,不要嵌套沿相同方向滚动的滚动区域。例如&#xff…

【LaTex】基础语法框架快速入门教程——Tex live+TexStudio简要安装及使用教程

0. 引言 LaTeX对于论文排版有着巨大的便利,并且对于参考文献的引用也十分方便,不会出现使用word引用参考文献一旦更改文献引用顺序,就必须全部改编号的情况。这里记录一下如何从0开始学习使用LaTeX书写论文。 1. 软件安装&环境配置 1.…

Qt中实例化一个函数变量时加不加括号的区别,以及括号中的this的使用

一、设计一个测试小程序 废话不多说,直接上代码。 main.h函数就不多说了,没改动。直接上mainwindow.h,也没改动。看mainwindow.cpp的内容。 #include "mainwindow.h" #include "ui_mainwindow.h" #include "test.…

机器学习算法基础——KNN算法

KNN (K-Nearest Neighbor)–K近邻分类算法 • 为了判断未知实例的类别,以所有已知类别的实例作为参照选择参数K • 计算未知实例与所有已知实例的距离 • 选择最近K个已知实例 • 根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻…

Zerobot僵尸网络出现了新的漏洞利用和功能

©网络研究院 Zerobot DDoS僵尸网络已经获得了重大更新,扩展了其针对更多互联网连接设备和扩展网络的能力。 微软威胁情报中心 (MSTIC)正在以DEV-1061的名称跟踪持续的威胁,名称为未知、新兴或发展中的活动群集。 本月早些时候,Fort…

2022年山东省职业院校技能大赛中职组“网络安全”赛项规程

2022年山东省职业院校技能大赛中职组“网络安全”赛项规程一、赛项名称赛项名称:网络安全英文名称:Cyber Security赛项组别:中职组赛项类别:电子与信息类二、竞赛目的网络空间已经成为陆、海、空、天之后的第五大主权领域空间,习总…

SpringCloud 网关组件 Zuul-1.0 原理深度解析

为什么要使用网关? 在当下流行的微服务架构中,面对多端应用时我们往往会做前后端分离:如前端分成 APP 端、网页端、小程序端等,使用 Vue 等流行的前端框架交给前端团队负责实现;后端拆分成若干微服务,分别…

k8s使用glusterfs(静态供给、动态供给)、glusterfs的安装与使用

目录前言主机准备配置主机名、关闭防火墙、关闭selinux挂载磁盘安装glusterfs服务端glusterfs的端口分布式集群的结构组成glusterfs集群创建存储卷启动卷k8s使用glusterfs作为后端存储(静态供给glusterfs存储)恢复初始化环境安装Heketi 服务(…

如何快速读懂开源代码?

文章目录**RUN起来****调试****把控关键数据结构和函数****从小的开始****关注一个模块****工具****一、阅读开源代码存在的一些误区**二、阅读代码的心态**三、阅读源码与**辅助材料**四、如何阅读开源代码****《gdb 高级调试实战教程》电子书下载链接:**1 下载 Ng…

ASP.NET开源版MES加工装配模拟系统源码/WinForm工厂加工装配系统源码/流程工序管理

一、源码描述 本系统用户大学机械科上位机加工装配模拟实验,目前正常用于实验当中。环境:VS2010(C# .NET4.0,多层结构)、sqlserver2008 r2 ;Winform;使用到RFID读写器(设备是可以变更的,修改RFID.Library项目的…

Mycat2(一)简介、分库分表概念

文章目录mycat是什么;为什么要用;mycat的作用原理分库分表的意义数据库优化的层次:数据切分的方式,带来的问题和解决方案分库分表带来的问题mycat的特性与详细配置含义mycat2与mycat1.6区别mycat2映射模型多数据源解决方案mycat核…

JavaScript控制元素(标签)的显示与隐藏

使用JavaScript有多种方式来隐藏元素: 方式一、使用HTML 的hidden 属性,隐藏后不占用原来的位置 hidden 属性是一个 Boolean 类型的值,如果想要隐藏元素,就将值设置为 true,否则就将值设置为false 【HTML hidden 属性…

【STM32+cubemx】0030 HAL库开发:DDS芯片AD9833实现简单的波形发生器

大家好,我是学电子的小白白,今天带大家了解一款波形发生器芯片——AD9833。 AD9833是AD公司出品的一款DDS波形发生器,能够产生正弦波、三角波和方波输出。 1)什么是DDS 通俗来讲,DDS是一种把波形预先存储在芯片内部的…

H5对接NSS主扫遇到的一些问题

需要对接以下这些钱包: WXPAY(微信)ALIPAY(支付宝)LINEPAY(linePay)PAY_PAY (PayPay)RAKUTEN_PAY(乐天)MER_PAY(MerPay)AU_PAY(auPay)DOCOMO_PAY(Dpay)判断钱包类型 这…

注册中心Nacos

Nacos是Spring Cloud Alibaba提供的一个软件 这个软件主要具有注册中心和配置中心(课程最后讲解)的功能 我们先学习它注册中心的功能 微服务中所有项目都必须注册到注册中心才能成为微服务的一部分 注册中心和企业中的人力资源管理部门有相似 当前微服务项目中所有的模块,在…