是前端还是后端的事?
你好,很高兴回答你的问题!!从以下几个方面阐述:
软件行业的分类
以上提到了两种架构方式:
1.单体式架构
通俗的讲就是所有的源代码在一个项目中,并且把这一个项目部署到服务器,当某个模块的访问流量增加,一台服务器难以支撑时,会把整个项目复制到新增的服务器上。以此类推..
这种架构有一个很大的缺点,就是并发配置不灵活,无法针对某个并发量大的模块进行并发配置,而是整个项目复制部署,这样会导致服务器资源的极大浪费。
所以就有了下面的架构方式:
2.分布式微服务架构
将项目拆分几个独立的功能单元(服务)的架构,每个功能单元就是一个服务。
这个服务的细粒度,根据实际情况可以很细,也可以很粗。
一个大型系统的甚至可以有成百上千个服务,这些服务之间彼此独立又互相联系。
优点:
1.降低了项目的复杂度
2.团队的职责界限明确
3.部署灵活
服务类型
在系统中所有的服务,可以分为以下两种类型:
服务提供者 (Provider)
即提供服务的一方
服务消费者 (Consumer)
调用服务的一方
即把每一个拆分出来的模块,继续拆分成消费者和提供者!!
拆分之后消费者如何调用?如上图消费者和提供者之间多了一层-注册中心
注册中心 (Registry)
注册中心类似于生活中的婚姻介绍所,男女双方都把各自的信息提供给婚姻介绍所,由婚姻介绍所,权衡双方信息,为男生女生选择“门当户对”的另一半
说的书面化一点:负责服务的注册与调用服务的注册中心,常用的注册中心有Zookeeper等
以上提到的注册中心(Registry)、 提供者(Provider)、消费者(Customer)是微服务框架Dobbox分布式微服务框架的三种主要角色
Dubbox框架
Dubbox是一个分布式微服务框架,前身是阿里巴巴的开源项目Dubbo,后来阿里不再维护此框架;进而当当网进行了进一步维护,为了和Dubbo区分就取名为Dubbox
Dubbox运行原理图解:
调用关系说明:
1. 服务容器负责启动、加载,运行服务提供者
2. 服务提供者在启动时,向注册中心注册自己提供的服务
3. 服务消费者在启动时,向注册中心订阅自己所需的服务
4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台
6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
如何实现微服务
1.安装Zookeeper
下载链接:
https://zookeeper.apache.org/releases.html
1.1解压安装包
1.2重命名 /conf/zoo_sample.cfg
1.3在Zookeeper主目录下创建data文件夹
1.4修改配置文件
zoo.cfg
指定dataDir为刚才创建的目录
记住访问端口2181
1.5双击启动服务器端和客户端
zkServer.cmd
服务器端
zkCli.cmd
客户端
启动后不要关闭,至此注册中心搭建完成!!
2.搭建管理控制台dubbo-admin
1.1从GitHub获取dubbo-admin
1.2切换到分支2.5.8
1.3使用Maven编译打成war包
进入到dubbo-admin目录
编译打包 : mvn clean package -DskipTests
1.4将war包部署到tomcat服务器并启动tomcat
这里不再赘述
1.5修改dubbo.properties文件
这三项目前不用修改
#zookeeper地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#root用户密码是root-登录dubbo后台使用
dubbo.admin.root.password=root
#guest用户密码root-登录dubbo后台使用
dubbo.admin.guest.password=guest
以上两个用户名密码很多人容易出错!!
我们输入以下地址访问:
http://localhost:8080/dubbo-admin-2.5.8/
用户名:root 密码:root
看到这个界面说明我们的管理控制台搭建成功
3.编写Consumer和Provider
项目结构图:
3.1创建公共模块(shop-common)
提供了公用的api及model等
实体类User
接口UserService
2.创建Provider
引入依赖
配置dubbo
服务实现类
@Service: dubbo提供者服务用于声明对外暴露服务,只能定义在一个类上,表示一个服务的具体实现
interfaceClass:指定服务提供方实现的 interface 的类
启动类
@EnableDubboConfiguration 将会自动扫描dubbo的service服务
3.创建Consumer
引入依赖
配置dubbo
创建UserController
@Reference 用于dubbo消费者服务指明引用哪个提供者接口服务
url:通过指定服务提供方的 URL 地址直接绕过注册中心发起调用
4.访问Controller
输出“hell dubbo!!”,说明微服务项目搭建成功
基于理论开始,到创建一个案例,到运行测试整个过程都详细描述,看完应该知道微服务怎么实现了,看过之后相信也知道微服务到底是前端还是后端了。
如果有需要源码或安装包可以私信我!!
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有