前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >非java异构服务如何集成到SpringCLoud集群中

非java异构服务如何集成到SpringCLoud集群中

原创
作者头像
欢醉
发布于 2023-03-13 00:43:57
发布于 2023-03-13 00:43:57
45500
代码可运行
举报
文章被收录于专栏:james大数据架构james大数据架构
运行总次数:0
代码可运行

  一个项目可能由于各种原因会存在多个语言编写的系统同时存在,但主项目如果采用的SpringCloud框架的话就无法通过微服务方式访问其他的异构系统,因此SpringCloud 生态圈给我们提供了很好的插件式服务,利用 sidecar 我们也可以轻松方便的集成异构系统到我们自己的系统来。

  如之前介绍过如此将NET MVC服务运行在Linux容器中,此时就可以通过Sidecar组件将此服务集成到SpringCloud服务中作为普通的服务调用。

1.创建一个SpringBoot服务

2.添加 maven 引用包

添加SpringCloud相关依赖后添加如下依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 异构系统模块 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sidecar</artifactId>
    <version>2.1.3.RELEASE</version>
</dependency>

3.添加应用配置

application.yml中添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 配置异构服务
sidecar:
  port: ${sidecar-port:3000}
  ip:  ${ip-address:localhost}
  health-check-url: http://${ip-address:localhost}:${sidecar.port}/health

注意: 在老版本中需要添加sidecar微服务启动类注解@EnableSidecar,如果添加文中的依赖的话是不需要的,默认是开启。

  sidecar-port指的是代理MVC服务的端口,ip指的是代理MVC服务的ip,MVC服务需要添加一个健康检测的health接口,如果是最新的Cloud框架为/actuator/health

4.运行此服务

  可以看到注册到注册中心的服务ip和端口为MVC服务的,其它服务通过服务名可直接访问到此MVC服务。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java并发编程--AQS
  抽象队列同步器(AbstractQueuedSynchronizer,简称AQS)是用来构建锁或者其他同步组件的基础框架,它使用一个整型的volatile变量(命名为state)来维护同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。
在周末
2019/09/11
3180
AQS学习笔记
AbstractQueuedSynchronizer继承了AbstractOwnableSynchronizer,这个类只有一个变量:exclusiveOwnerThread,表示当前占用该锁的线程,并且提供了相应的get,set方法。 AQS内部通过一个int类型的成员变量state来控制同步状态,当state=0时,则说明没有任何线程占有共享资源的锁,当state=1时,则说明有线程目前正在使用共享变量,其他线程必须加入同步队列进行等待。 AQS内部通过内部类Node构成FIFO的同步队列来完成线程获取锁的排队工作,同时利用内部类ConditionObject构建等待队列,当Condition调用wait()方法后,线程将会加入等待队列中,而当Condition调用signal()方法后,线程将从等待队列转移动同步队列中进行锁竞争。注意这里涉及到两种队列,一种是同步队列,当线程请求锁而等待的后将加入同步队列等待,而另一种则是等待队列(可有多个),通过Condition调用await()方法释放锁后,将加入等待队列。
Java阿呆
2020/11/04
3920
AQS学习笔记
10分钟从源码级别搞懂AQS(AbstractQueuedSynchronizer)
上篇文章15000字、6个代码案例、5个原理图让你彻底搞懂Synchronized有说到synchronized由object monitor实现的
菜菜的后端私房菜
2024/07/16
4351
AQS源码学习
AQS全称AbstractQueuedSynchronizer,是一个同步器,用来构建锁或者其他同步组件的基础框架。内部主要使用一个volatile修饰的state变量和一个FIFO双向队列来实现的。
秃头哥编程
2022/04/27
2270
AQS源码学习
Java并发-AbstractQueuedSynchronizer(AQS)JDK源代码分析
 学习Java并发编程不得不去了解一下java.util.concurrent这个包,这个包下面有许多我们经常用到的并发工具类,例如:ReentrantLock,CountDownLatch,CyclicBarrier, Semaphore等。而这些类的底层实现都依赖于AbstractQueuedSynchronizer这个类,由此可见这个类的重要性。所以在Java并发系列文章中我首先对AbstractQueuedSynchronizer这个类进行分析。为了叙述简单,后续有些地方会用AQS代表这个类。
Fisherman渔夫
2020/02/19
9200
Java并发-AQS(1)
同步器本身是个抽象类,一般是通过继承的方式使用,子类通过继承同步器并实现它的抽象方法来管理同步状态。同步器提供了3个方法来修改同步状态(即state变量):getState(),setState(int newState),compareAndSetState(int expect, int update)。
lpe234
2021/02/22
2990
JUC同步器框架AbstractQueuedSynchronizer源码图文分析
Doug Lea大神在编写JUC(java.util.concurrent)包的时候引入了java.util.concurrent.locks.AbstractQueuedSynchronizer,Abstract Queued Synchronizer,也就是"基于队列实现的抽象同步器",一般我们称之为AQS。其实Doug Lea大神编写AQS是有严谨的理论基础的,他的个人博客上有一篇论文《The java.util.concurrent Synchronizer Framework》,文章在http://ifeve.com上可以找到相关的译文(《JUC同步器框架》),如果想要深入研究AQS必须要理解一下该论文的内容,然后详细分析一下AQS的源码实现。本文在阅读AQS源码的时候选用的JDK版本是JDK11。
Throwable
2020/06/23
1.2K0
Java中的锁的使用和实现介绍
锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 源代码基于 1.8.0
用户7886150
2020/12/04
5820
AQS 锁核心类详解
AQS(AbstractQuenedSynchronizer 抽象队列同步器) 是一个用来构建锁和同步器的框架,使用 AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,SynchronousQueue,FutureTask等等皆是基于 AQS的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。当然,我们自己也能利用 AQS非常轻松容易地构造出符合我们自己需求的同步器。AQS 框架如下:上图中有颜色的为Method,无颜色的为Attribution。
Java架构师必看
2021/04/23
7610
分门别类总结Java中的各种锁
非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。
李红
2019/05/29
5250
基于AQS的ReentrantLock实现原理
Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。
tunsuy
2022/10/27
4540
JUC解析-AQS-抽象队列同步器
2.独占锁exclusive是一个悲观锁。保证只有一个线程经过一个阻塞点,只有一个线程可以获得锁。
Java宝典
2021/04/22
3620
JUC解析-AQS-抽象队列同步器
JUC并发—5.AQS源码分析一
ReentractLock是重入锁,属于排他锁,功能和synchronized类似。但是在实际中,其实比较少会使用ReentrantLock。因为ReentrantLock的实现及性能和syncrhonized差不多,所以一般推荐使用synchronized而不是ReentrantLock。
东阳马生架构
2025/04/24
1020
AQS独占锁和重入锁详解
在我们并发编程的文章一开始,我们都是在围绕着线程安全问题叙述它的解决方案,在前面的文章中我们曾提到过CAS无锁机制、synchronized关键字等多种解决方案,在其中CAS机制属于乐观锁类型,synchronized关键字属于悲观锁类型,而我们本章要谈到的基于AQS实现的ReetrantLock也是属于悲观锁类型的实现。但是它与我们之前聊的synchronized并不相同,synchronized关键字属于隐式锁,锁的获取和释放都是隐式的,且不需要开发人员干预。而我们本章要讲的则是显式锁,即锁的获取和释放都需要我们手动编码实现。在JDK1.5时,官方在Java.uitl.concurrent并发包中添加了Lock锁接口,该接口中定义了lock()获取锁和unlock()释放锁两个方法对显式锁的加锁与解锁操作提供了支持。显式锁的使用方式如下:
派大星在吗
2021/12/17
1.6K0
如何手写一个AQS?
AQS即AbstractQueuedSynchronizer,是用来实现锁和线程同步的一个工具类。大部分操作基于CAS和FIFO队列来实现。
Java识堂
2021/03/30
4650
如何手写一个AQS?
Java并发同步器AQS
AQS是AbstractQueuedSynchronizer的简写,中文名应该叫抽象队列同步器(我给的名字,哈哈),出生于Java 1.5。
用户1212940
2022/04/13
2980
Java并发同步器AQS
由浅入深逐步讲解Java并发的半壁江山AQS
synchronized 关键字是JDK官方人员用C++代码写的,在JDK6以前是重量级锁。Java大牛 Doug Lea对 synchronized 在并发编程条件下的性能表现不满意就自己写了个JUC,以此来提升并发性能,本文要讲的就是JUC并发包下的AbstractQueuedSynchronizer。
sowhat1412
2020/12/28
5630
由浅入深逐步讲解Java并发的半壁江山AQS
AQS (Abstract Queued Synchronizer)源码解析 -- 独占锁与共享锁的加锁与解锁
AQS (Abstract Queued Synchronizer) 是 JDK 提供的一套基于 FIFO 同步队列的阻塞锁和相关同步器的一个同步框架,通过 AQS 我们可以很容易地实现我们自己需要的独占锁或共享锁。 java 中,我们曾经介绍过的信号量、ReentrantLock、CountDownLatch 等工具都是通过 AQS 来实现的。
用户3147702
2022/06/27
8870
AQS (Abstract Queued Synchronizer)源码解析 -- 独占锁与共享锁的加锁与解锁
面试系列之-AQS抽象同步器的核心原理(JAVA基础)
解决CAS恶性空自旋的有效方式之一是以空间换时间,较为常见的方案有两种:分散操作热点和使用队列削峰。JUC并发包使用的是队列削峰的方案解决CAS的性能问题,并提供了一个基于双向队列的削峰基类——抽象基础类AbstractQueuedSynchronizer(抽象同步器类,简称为AQS)。
用户4283147
2023/09/11
2990
面试系列之-AQS抽象同步器的核心原理(JAVA基础)
​AQS中的公平锁与非公平锁,Condtion
一行一行源码分析清楚 AbstractQueuedSynchronizer (二)
Java技术江湖
2019/09/25
7150
相关推荐
Java并发编程--AQS
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验