当前位置: 首页 > news >正文

【微服务】-微服务环境搭建

目录

2.1 技术选型

2.2 模块设计

2.3 微服务调用

2.4 创建⽗⼯程

2.5 创建商品微服务

2.6 创建订单微服务


 

2.1 技术选型

持久层: SpingData Jpa
数据库: MySQL5.7
其他: SpringCloud Alibaba 技术栈

2.2 模块设计

--- shop-parent ⽗⼯程
--- shop-product-api 商品微服务api 【存放商品实体】
--- shop-product-server 商品微服务 【端⼝:8081
--- shop-order-api 订单微服务api 【存放订单实体】
--- shop-order-server 订单微服务 【端⼝:8091

2.3 微服务调用

在微服务架构中,最常⻅的场景就是微服务之间的相互调⽤。我们以电商系统中常⻅的⽤户下单
例来演示微服务的调⽤:客户向订单微服务发起⼀个下单的请求,在进⾏保存订单之前需要调⽤商品微服务查询商品的信息。
我们⼀般把服务的主动调⽤⽅称为服务消费者,把服务的被调⽤⽅称为服务提供者

 

2.4 创建⽗⼯程

        创建⼀个maven⼯程,然后在pom.xml⽂件中添加下⾯内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.wolfcode</groupId><artifactId>shop-parent</artifactId><version>1.0.0</version><packaging>pom</packaging><!--⽗⼯程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version></parent><!--依赖版本的锁定--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-cloud.version>Hoxton.SR8</spring-cloud.version><spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloudalibaba.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

2.5 创建商品微服务

        1.创建shop-product-api项⽬,然后在pom.xml⽂件中添加下⾯内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>shop-parent</artifactId><groupId>cn.wolfcode</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>shop-product-api</artifactId><!--依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
2 创建实体类
//商品
@Entity(name = "t_shop_product")
@Data
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long pid;//主键private String pname;//商品名称private Double pprice;//商品价格private Integer stock;//库存
}
3.创建shop-product-server项⽬,然后在pom.xml⽂件中添加下⾯内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>shop-parent</artifactId><groupId>cn.wolfcode</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>shop-product-server</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.56</version></dependency><dependency><groupId>cn.wolfcode</groupId><artifactId>shop-product-api</artifactId><version>1.0.0</version></dependency></dependencies>
</project>
4.编写启动类ProductServer.java

@SpringBootApplication
public class ProductServer {public static void main(String[] args) {SpringApplication.run(ProductServer.class,args);}
}
5.编写配置⽂件application.yml
server:
        port: 8081
spring:
        application:
                name: product-service
        datasource:
                driver-class-name: com.mysql.jdbc.Driver
                url: jdbc:mysql:///shop-product?
serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
                username: root
                password: admin
        jpa:
                properties:
                        hibernate:
                                hbm2ddl:
                                        auto: update
                                        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
6.在数据库中创建shop-product的数据库

7.创建ProductDao
public interface ProductDao extends JpaRepository<Product, Long> {
}
8.创建ProductService接⼝和实现类
@Service
public class ProductServiceImpl implements ProductService {@Autowiredprivate ProductDao productDao;@Overridepublic Product findByPid(Long pid) {return productDao.findById(pid).get();}
}
9.创建Controller
@RestController
@Slf4j
public class ProductController {@Autowiredprivate ProductService productService;//商品信息查询@RequestMapping("/product/{pid}")public Product findByPid(@PathVariable("pid") Long pid) {log.info("接下来要进⾏{}号商品信息的查询", pid);Product product = productService.findByPid(pid);log.info("商品信息查询成功,内容为{}", JSON.toJSONString(product));return product;}
}
10.启动⼯程,等到数据库表创建完毕之后,加⼊测试数据
INSERT INTO t_shop_product VALUE(NULL,'⼩⽶','1000','5000');
INSERT INTO t_shop_product VALUE(NULL,'华为','2000','5000');
INSERT INTO t_shop_product VALUE(NULL,'苹果','3000','5000');
INSERT INTO t_shop_product VALUE(NULL,'OPPO','4000','5000');

11.通过浏览器访问服务

 

2.6 创建订单微服务

1.创建shop-order-api项⽬,然后在pom.xml⽂件中添加下⾯内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>shop-parent</artifactId><groupId>cn.wolfcode</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>shop-order-api</artifactId><!--依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
2 创建实体类
//订单
@Entity(name = "t_shop_order")
@Data
public class Order {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long oid;//订单id//⽤户private Long uid;//⽤户idprivate String username;//⽤户名//商品private Long pid;//商品idprivate String pname;//商品名称private Double pprice;//商品单价//数量private Integer number;//购买数量
}
3.创建shop-order-server项⽬,然后在pom.xml⽂件中添加下⾯内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>shop-parent</artifactId><groupId>cn.wolfcode</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>shop-order-server</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.56</version></dependency><dependency><groupId>cn.wolfcode</groupId><artifactId>shop-order-api</artifactId><version>1.0.0</version></dependency></dependencies>
</project>
4.编写启动类OrderServer.java
@SpringBootApplication
public class OrderServer {public static void main(String[] args) {SpringApplication.run(OrderServer.class,args);}
}
5.编写配置⽂件application.yml
server:
        port: 8091
spring:
        application:
                name:order-service
        datasource:
                driver-class-name: com.mysql.jdbc.Driver
                url: jdbc:mysql:///shop-order? serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
                username: root
                password: admin
        jpa:
                properties:
                        hibernate:
                                hbm2ddl:
                                        auto: update
                                        dialect: org.hibernate.dialect.MySQL5InnoDBDialect

6.在数据库中创建shop-order的数据库 

7.创建OrderDao
public interface OrderDao extends JpaRepository<Order, Long> {
}
8.创建OrderService接⼝和实现类
@Service
@Slf4j
public class OrderServiceImpl implements OrderService {@Autowiredprivate OrderDao orderDao;@Overridepublic Order createOrder(Long productId,Long userId) {log.info("接收到{}号商品的下单请求,接下来调⽤商品微服务查询此商品信息",
productId);//远程调⽤商品微服务,查询商品信息Product product = null;log.info("查询到{}号商品的信息,内容是:{}", productId,
JSON.toJSONString(product));//创建订单并保存Order order = new Order();order.setUid(userId);order.setUsername("叩丁狼教育");order.setPid(productId);order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(1);orderDao.save(order);log.info("创建订单成功,订单信息为{}", JSON.toJSONString(order));return order;}
}
9.创建Controller
@RestController
@Slf4j
public class OrderController {@Autowiredprivate OrderService orderService;@RequestMapping("/save")public Order order(Long pid,Long uid) {return orderService.createOrder(pid,uid);}
}

10.直接往数据库中添加几条数据,启动项目进行调用即可。

相关文章:

【微服务】-微服务环境搭建

目录 2.1 技术选型 2.2 模块设计 2.3 微服务调用 2.4 创建⽗⼯程 2.5 创建商品微服务 2.6 创建订单微服务 2.1 技术选型 持久层: SpingData Jpa 数据库: MySQL5.7 其他: SpringCloud Alibaba 技术栈 2.2 模块设计 --- shop-parent ⽗⼯程 --- shop-product-api 商品微服…...

IGKBoard(imx6ull)-ADC编程MQ-2烟雾传感器采样

文章目录1- ADC介绍2- MQ-2烟雾传感器介绍&#xff08;1&#xff09;工作原理&#xff08;2&#xff09;MQ-2应用电路3- MQ-2烟雾传感器硬件连接4- ADC驱动配置5- 编程查看当前浓度1- ADC介绍 ADC是Analog-to-Digital Converter的缩写&#xff0c;指模数转换器。真实世界的模拟…...

前端二面vue面试题总结

什么是 mixin &#xff1f; Mixin 使我们能够为 Vue 组件编写可插拔和可重用的功能。如果希望在多个组件之间重用一组组件选项&#xff0c;例如生命周期 hook、 方法等&#xff0c;则可以将其编写为 mixin&#xff0c;并在组件中简单的引用它。然后将 mixin 的内容合并到组件中…...

时间API在更新,传奇已经谢幕,但技术永远不死

&#xff08;Bill Joy(左一)&#xff0c;Vinod Khosla(左二)&#xff0c;Andy Bechtolsheim(右二)&#xff0c;Scott McNealy(右一) &#xff09; CSDN 博文征集活动&#xff08;和日期相关的代码和bug&#xff09;&#xff1a;点击这里 各位 “big guys”&#xff0c;这篇博文…...

SQL调优指南笔记22:Gathering Diagnostic Data with SQL Test Case Builder

本文为SQL Tuning Guide 第21章“Gathering Diagnostic Data with SQL Test Case Builder”的笔记。 SQL Test Case Builder 是一种工具&#xff0c;可自动收集在不同数据库实例中重现问题所需的信息。 SQL 测试用例是一组信息&#xff0c;使开发人员能够为遇到性能问题的特定…...

从0开始学python -43

Python3 正则表达式 正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块&#xff0c;它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根…...

Kafka基本原理

总述 简介 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各…...

css3的重点内容

css3的重点内容 浮动 父级边框塌陷问题 浮动的清除 clear:left; //清除左侧浮动 clear:right; //清除右侧浮动 clear:both; //清除两侧浮动解决方案 增加父级元素的高度增加一个空的div&#xff0c;之后清除浮动通过overflow来进行相关元素的修剪给父类添加相应的伪类元素…...

《Roller: Fast and Efficient Tensor Compilation for Deep Learning》

《Roller: Fast and Efficient Tensor Compilation for Deep Learning》 用于深度学习 快速高效的张量编译器 作者 微软亚洲研究院以及多伦多大学等多所高校 摘要 当前编译为了产生高效的kernel时&#xff0c;搜索空间大&#xff0c;通常使用机器学习的方法 找到最优的方案…...

顺丰同城测试开发一面 49min答案,全文7000字,面试总结都在这里了

今天给大家分享一份顺丰同城的测试开发一面面试真题。老规矩&#xff0c;当你看到这份面试题的时候&#xff0c;先不要着急去看答案&#xff0c;你可以想想假如你在面试现场&#xff0c;你会怎么回答&#xff1f;这个思考的过程其实也是很重要的。 全文7000字干货&#xff0c;…...

docker启动容器服务之后访问失败

关于docker启动容器服务之后&#xff0c;宿主机访问失败&#xff08;解决方法&#xff09; 注&#xff1a;在进行docker容器启动宿主机进行容器访问时&#xff0c;无需进行网络的配置&#xff0c;docker容器在启动时会自动解决 第一种原因及修改方法 在进行启动的时候&#…...

GraalVM-云原生时代的JVM(Java)

文章目录一、GraalVM是什么&#xff1f;二、GraalVM有哪些特点&#xff1f;2.1、高性能2.2、多语言支持2.3、互操作性2.4、安全性三、GraalVM的应用效果3.1、提高性能3.2、简化开发3.3、降低成本3.4、节省资源3.5、支持云环境四、使用GraalVM编译springboot应用程序4.1、下载并…...

如何外网登录访问瑞友天翼应用虚拟化系统?——快解析内网端口映射方案

瑞友天翼应用虚拟化系统&#xff08;GWT System&#xff09;是国内具有自主知识产权的应用虚拟化平台&#xff0c;是基于服务器计算&#xff08;Server-based Computing&#xff09;的应用虚拟化平台。如何将内网平台提供到互联网上外网访问&#xff0c;是我们比较关注的问题。…...

蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访

今年春节档&#xff0c;科幻类电影《流浪地球2》票房口碑双丰收&#xff0c;截至目前&#xff0c;累计票房已破 38 亿&#xff0c;淘票票评分 9.6 &#xff0c;影片的特效质感可以媲美国际顶尖水平。其中&#xff0c;蓝海彤翔为影片的后期制作提供了出色的渲染服务。2月21日&am…...

iOS Airplay Screen Mirroring 同屏技术详解

投屏技术已经被大量用在身边的产品&#xff0c;比如电视投屏&#xff0c;投影仪&#xff0c;视频会议产品中。 在iOS平台外的其他平台中都已经有非常成熟的标准和实现。但在封闭的苹果iOS和Mac系统中&#xff0c;苹果使用私有的Airplay协议进行多屏互动&#xff0c;只开放给自己…...

更新 Python 100道基础入门检测练习题【下篇】(附答案)

前言 大家早好、午好、晚好吖 ❤ ~ 爆肝更新 Python 100道基础入门练习题【篇上】 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例021&#xff1a;猴子偷桃 题目&#xff1a; 猴子吃桃问题&#xff1a;猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xf…...

[RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments

本文主要解决的问题是在RoCEv2体系中&#xff0c;基于优先级的拥塞控制PFC是一种粗粒度的机制。 它在端口&#xff08;或端口加优先级&#xff09;级别上运行&#xff0c;并且不区分流。PAUSE机制是基于每个端口&#xff08;和优先级&#xff09;的&#xff0c;而不是基于每个流…...

ROS2功能包Hello world(python)

文章目录环境准备Python创建工作空间、功能包及节点方法编译使用环境准备 为了便于日后复现&#xff0c;相关环境已经打包到docker中。 拉取docker镜像 docker pull 1224425503/ros2_foxy_full:latest新建容器 docker run -dit --rm --privilegedtrue --network host -e NV…...

数学建模竞赛的一些心得体会

1.数学建模经验首先简要的介绍一下我的情况。数学建模我也是在大一暑假开始接触的&#xff0c;之前对其没有任何的了解。我本身对数学也有相对较厚的兴趣&#xff0c;同时我也是计算机专业的学生&#xff0c;因此&#xff0c;我觉得我可参加数学建模的这个比赛。大一的暑假参加…...

什么是自动化测试?自动化测试现状怎么样?

什么是自动化测试&#xff1a;其实自动化测试&#xff0c;就是让我们写一段程序去测试另一段程序是否正常的过程&#xff0c;自动化测试可以更加省力的替代一部分的手动操作。 现在自动化测试的现状&#xff0c;也是所有学习者关心的&#xff0c;但现在国内公司主要是以功能测…...

Vit工程化应用(timm 库)

pip install timm import timm import torch from PIL import Image import requests from io import BytesIO# 1. 加载模型 (ViT Base版本&#xff0c;16x16图块&#xff0c;在ImageNet-1k上预训练) # 设置 pretrainedTrue 自动下载权重 model timm.create_model(vit_base_pa…...

从零构建大模型推理引擎:KV缓存、算子融合与量化优化实战

1. 项目概述&#xff1a;从零理解大模型推理引擎如果你正在关注大语言模型&#xff08;LLM&#xff09;的实际应用&#xff0c;特别是如何让这些动辄数百亿参数的“庞然大物”在你的本地机器或服务器上高效地跑起来&#xff0c;那么你很可能已经听说过“推理引擎”这个词。anik…...

喜马拉雅VIP音频下载指南:xmly-downloader-qt5完整解决方案

喜马拉雅VIP音频下载指南&#xff1a;xmly-downloader-qt5完整解决方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 你是否曾为…...

Memor:为LLM对话构建结构化记忆引擎,实现可重现、可移植的AI交互管理

1. 项目概述&#xff1a;Memor&#xff0c;为LLM对话赋予结构化记忆如果你和我一样&#xff0c;长期和各类大语言模型打交道&#xff0c;从早期的GPT-3到现在的Claude、Gemini&#xff0c;一个绕不开的痛点就是&#xff1a;对话历史的管理。默认的聊天界面里&#xff0c;历史记…...

论文降AI率通关指南:7个实用技巧+高效工具一次讲清

为什么你的论文总被判定为AIGC疑似&#xff1f; 随着AI写作工具的广泛普及&#xff0c;不少科研人员和学生都碰到了同一个头疼的问题&#xff1a;论文AIGC疑似率超标。现在大多数高校都出台了明确规定&#xff0c;AIGC率超过30%就可能被判定为AI代写&#xff0c;直接取消答辩资…...

Taotoken 官方价折扣与活动价助力个人开发者降低创新门槛

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken 官方价折扣与活动价助力个人开发者降低创新门槛 对于个人开发者和学生而言&#xff0c;探索大模型应用的最大挑战之一往往…...

终极指南:在Windows上轻松安装安卓应用,告别笨重模拟器

终极指南&#xff1a;在Windows上轻松安装安卓应用&#xff0c;告别笨重模拟器 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上运行安卓应…...

51单片机项目进阶:给电子秤加上JQ8400语音播报,一线串口控制到底有多方便?

51单片机电子秤语音播报模块深度实战&#xff1a;从JQ8400-FL选型到一线串口控制全解析 当你已经完成基础电子秤项目&#xff0c;能够准确显示重量并计算价格时&#xff0c;如何让这个设备"会说话"&#xff1f;语音交互功能的加入不仅能提升用户体验&#xff0c;更能…...

uHabits习惯追踪应用完整指南:从入门到精通的5个实用技巧

uHabits习惯追踪应用完整指南&#xff1a;从入门到精通的5个实用技巧 【免费下载链接】uhabits Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits 项目地址: https://gitcode.com/gh_mirrors/uh/uhabits uHabits习惯追踪应用是…...

从OCP协议到3D寄生提取:EDA/IP技术演进与工程实践深度解析

1. 行业动态综述&#xff1a;从新闻简报到深度洞察每周追踪EDA&#xff08;电子设计自动化&#xff09;和IP&#xff08;知识产权核&#xff09;领域的动态&#xff0c;已经成了我从业十几年来的一个习惯。这不仅仅是看看新闻&#xff0c;更像是定期参加一场虚拟的行业技术交流…...