springboot+grpc+k8s+istio环境

2023年8月17日,本人之前使用过nacos+dubbo+springboot、eureka+feign等环境。最近学习到了istio服务网格集成到k8s也可以实现分布式微服务。

1. 环境

  • Kubernetes集群
  • istio集成到k8s
  • jdk17 (8也ok)
  • gPRC服务间通信

2. 微服务

  • cloud-config服务是spring-cloud-config-server配置中心,用于加载远程配置文件,该服务端口号8081
  • boot-rpc-service服务是生产者微服务,开放的gRPC端口18082
  • boot-grpc-client服务是消费者微服务,开放的http端口是8083,开放接口/test1?name=hello实现了grpc调用生产者微服务
  • 公共服务boot-grpc-api是生成的grpc proto信息

3. 部署到k8s

本地测试成功后,部署k8s

  1. 生成各个服务jar包,上传服务器

    • cloud-config.jar
    • boot-rpc-service.jar
    • boot-grpc-client.jar
  2. 构建各个服务docker镜像

    • istio-demo-spring-configserver:v3
    • istio-demo-spring-gprc-server:v3
    • istio-demo-spring-gprc-client:v3
  3. 创建各个微服务deployment资源

    - image: 'istio-demo-spring-configserver:v3'ports:- containerPort: 8081
    
    - image: 'istio-demo-spring-gprc-server:v3'ports:- containerPort: 18082
    
    - image: 'istio-demo-spring-gprc-client:v3'ports:- containerPort: 8083
    
  4. 创建service资源

    kind: Service
    metadata:name: web-base
    spec:ports:- name: config8081port: 8081targetPort: 8081- name: gserver18082port: 18082targetPort: 18082- name: gclient8083port: 8083targetPort: 8083
    
  5. 到此还没使用istio的功能,先验证一下服务是否正常启动
    curl -I "http://web-base:8083/test1?name=hello"
    结果;
    HTTP/1.1 200 OK
    content-type: text/plain;charset=UTF-8
    content-length: 14
    date: Thu, 17 Aug 2023 02:40:23 GMT
    x-envoy-upstream-service-time: 32
    server: envoy

  6. 创建istio虚拟服务用于内部grpc通信

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:name: web-base-internal-vs
    spec:hosts:- web-basehttp:route:- destination:host: web-basesubset: dd11headers:response:set:ssxppp: ffffffyyyyyyy-internall
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:name: web-base-dr
    spec:host: web-basesubsets:- name: dd11labels:version: vv11
    
  7. 使用istio的功能,先验证一下内部服务是否添加了响应header信息
    curl -I "http://web-base:8083/test1?name=hello"
    结果;
    HTTP/1.1 200 OK
    content-type: text/plain;charset=UTF-8
    content-length: 14
    date: Thu, 17 Aug 2023 02:40:23 GMT
    x-envoy-upstream-service-time: 32
    server: envoy
    ssxppp: ffffffyyyyyyy-internall

  8. 创建istio网关和虚拟服务用于外部交互

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:name: web-base-external-vs
    spec:hosts:- grpcdemo.xxx.cngateways:- grpcdemo-gatewayhttp:route:- destination:host: web-basesubset: dd11port:number: 8083headers:response:set:ssxppp: ffffffyyyyyyy-externall
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:name: grpcdemo-gateway
    spec:selector:istio: ingressgateway # use Istio default gateway implementationservers:- port:number: 80name: httpprotocol: HTTPhosts:- "grpcdemo.xxx.cn"
    
  9. 验证外部访问是否成功
    curl -I -HHost:grpcdemo.xxx.cn "http://192.168.0.101:32318/test1?name=hello" (端口号是ingressgateway服务的nodeport)
    结果;
    HTTP/1.1 200 OK
    content-type: text/plain;charset=UTF-8
    content-length: 14
    date: Thu, 17 Aug 2023 02:40:23 GMT
    x-envoy-upstream-service-time: 32
    server: envoy
    ssxppp: ffffffyyyyyyy-extenall

源码

https://github.com/shenshuxin01/grpc-springboot/tree/dev-istio

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

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

相关文章

中国剩余定理及扩展

目录 中国剩余定理解释 中国剩余定理扩展——求解模数不互质情况下的线性方程组: 代码实现: 互质: 非互质: 中国剩余定理解释 在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二&#x…

【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞

[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

leetcode做题笔记88. 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组…

Mybatis的SqlSource SqlNode BoundSql

学习链接 MyBatis SqlSource解析 【Mybatis】Mybatis源码之SqlSource#getBoundSql获取预编译SQL Mybatis中SqlSource解析流程详解 Mybatis TypeHandler解析 图解 Mybatis的SqlSource&SqlNode - processon DynamicSqlSource public class DynamicSqlSource implement…

notepad++ verilog关键字自动补全

新建verilog.xml放在安装目录下 D:\Program Files (x86)\Notepad\autoCompletion <?xml version"1.0" encoding"Windows-1252" ?> <NotepadPlus><AutoComplete><KeyWord name"accept_on" /><KeyWord name"a…

mysql自定义实体类框架

根据表结构自动生产实体类和方法,根据反射与io生成,可自定义扩展方法 package com.digital.web.front; /*** pom依赖* <dependency>* <groupId>mysql</groupId>* <artifactId>mysql-connector-java</artifactId>* <version>5.1.27</ve…

设计模式详解-责任链模式

类型&#xff1a;行为型模式 实现原理&#xff1a;为请求创建了一个接收者对象的链。对请求的发送者和接收者进行解耦&#xff0c;每个接收者都包含对另一个接收者的引用&#xff0c;如果一个对象不能处理该请求&#xff0c;那么它会把相同的请求传给下一个接收者&#xff0c;…

极致鸿蒙2.0——华为MatePad系列安装AidLux,一个自带vscode的Python编译环境

看着刚刚人入手的华为鸿蒙系统MatePad11平板&#xff0c;是如此的美轮美奂&#xff0c;但是总感觉少了点什么&#xff0c;少了点什么呢&#xff1f;是编程环境&#xff0c;我爱MatePad&#xff0c;也爱编程&#xff0c;那如果可以在MatePad上编程&#xff0c;会发生什么&#x…

SpringBoot、Java 使用 Jsoup 解析 HTML 页面

使用 Jsoup 解析 HTML 页面 什么是 Jsoup&#xff1f; Jsoup 是一个用于处理 HTML 页面的 Java 库&#xff0c;它提供了简单的 API&#xff0c;使得从 HTML 中提取数据变得非常容易。无论是获取特定标签的内容还是遍历整个页面的元素&#xff0c;Jsoup 都能轻松胜任。 如何使…

【ARM Linux 系统稳定性分析入门及渐进12 -- GDB内存查看命令 “x“(examine)】

文章目录 gdb 内存查看命令 examine 上篇文章&#xff1a;ARM Linux 系统稳定性分析入门及渐进11 – GDB( print 和 p 的使用| 和 &#xff1a;&#xff1a;的使用|ptype|{&#xff1c;type&#xff1e;} &#xff1c;addr&#xff1e; ) gdb 内存查看命令 examine examine是…

c语言——判断,判断是否是字母

//判断&#xff0c;判断是否是字母 #include<stdio.h> #include<stdlib.h> int main() {char c;printf("输入字符&#xff1a;");scanf("%c",&c);if((c>a&&c<z)||(c>A&&c<Z)) //a~z的ASCLL区间是97-122&…

【每日一题Day299】LC2235两整数相加

两整数相加【LC2235】 给你两个整数 num1 和 num2&#xff0c;返回这两个整数的和。 实现 class Solution {public int sum(int num1, int num2) {return num1 num2;} }复杂度 时间复杂度&#xff1a; O ( 1 ) \mathcal{O}(1) O(1)空间复杂度&#xff1a; O ( 1 ) \mathcal{O}…

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …

【C# 基础精讲】自定义异常类

自定义异常类是C#中异常处理的一种重要方式&#xff0c;它允许您创建具有自定义错误信息和处理逻辑的异常类型&#xff0c;以提高程序的可读性和可维护性。通过自定义异常类&#xff0c;您可以为特定的业务逻辑或应用场景创建更有意义的异常&#xff0c;使错误处理更加精确和有…

【Go 基础篇】Go语言关键字和预定义标识符解析:探索编程的基石与核心要素

介绍 在计算机编程中&#xff0c;关键字&#xff08;Keywords&#xff09;和预定义标识符&#xff08;Predefined Identifiers&#xff09;是编程语言的核心要素&#xff0c;它们在语法结构和语言功能中起到重要作用。在Go语言&#xff08;Golang&#xff09;中&#xff0c;关…

虚拟拍摄,如何用stable diffusion制作自己的形象照?

最近收到了某活动的嘉宾邀请&#xff0c;我将分享&#xff1a; 主题&#xff1a;生成式人工智能的创新实践 简要描述&#xff1a;从品牌营销、智能体、数字内容创作、下一代社区范式等方面&#xff0c;分享LLM与图像等生成式模型的落地应用与实践经验。 领域/研究方向&#xff…

1.flink快速入门

前言 下图表示的是一个简单的flink-job的计算图&#xff0c;这种图被称为DAG(有向无环图)&#xff0c;表示的这个任务的计算逻辑&#xff0c;无论是spark、hive、还是flink都会把用户的计算逻辑转换为这样的DAG&#xff0c;数据的计算按照DAG触发&#xff0c;理论上只要构建出…

[oneAPI] 使用字符级 RNN 生成名称

[oneAPI] 使用字符级 RNN 生成名称 oneAPI特殊写法使用字符级 RNN 生成名称Intel Optimization for PyTorch数据下载加载数据并对数据进行处理创建网络训练过程准备训练训练网络 结果 参考资料 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517…

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

1.Ubuntu Qt 配置交叉编译环境 1.1 ubuntu 20.04安装Qt sudo apt-get install qtcreator 1.2 配置QT GCC配置同上 最后配置Kits 上面设置完成之后 &#xff0c;设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上) 点击NEXT之后会出现连接被拒绝&#xff0c;不用担…

函数极限与连续性——张宇老师学习笔记

Latex 源代码以及成品PDF&#xff08;Debug版本&#xff09;&#xff1a;https://wwsk.lanzouc.com/itaDI15vddcb Latex编译Debug版本&#xff1a; $ xelatex 函数极限与连续性.texLatex编译Relese版本&#xff08;无例题、习题&#xff0c;只有概念定义&#xff09;&#xf…