java和python能联合开发吗,java和python混合架构

大家好,给大家分享一下java和python能联合开发吗,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

java与python之间的混合开发

1. 项目需求

使用java进行进行数据库的访问,并对查询出的数据进行的数据清理,使用python进行无监督分类

应用场景:

. 整个项目是BS架构,基于SpringBoot2.0

. 业务端主要是通过Java来实现后台与数据库的连接与交互

. 算法端主要通过python实现

实现的目标:

  1. Java通过多线程任务调度定时完成任务调度,完成对数据库中的某一数据进行聚类并生成对应的聚类模型,聚类和模型生成由Python实现;
  2. 通过前端调用Resful接口来调取后端的接口,再通过java来与python交互,实现模型的调用来完成新数据的推理;
  3. 整个过程python不涉及查数据库,Java查数据库之后实现数据的清洗和预处理,按照约定的格式传递给python来进行数据的算法实现

2.方案

  1. 可以通过udp或者tcp协议来传递数据

    缺点:a. 不能异步通信;b.安全性不高;c.调试麻烦;d.数据容易丢失

  2. 通过网络接口(Restful)的方式,调用python服务(通过http的POST请求中的Body将数据传入,没有测试过数据量)

  3. 通过消息中间键,来作为数据传递和消息传递的媒介,通过队列的方式来传递数据,实现异步通信,并且通过中间键作为中介有管理系统,安全性高,有对应的管理界面调试比较简单,能够查看推送的数据是什么;使用队列来作为日志信息的输入和输出;

  • 最终确定的方案:选用方案二
    使用消息中间键的好处:

    1. 数据不容易丢

    2. 能够实现异步通信

      异步方式指消息发送方在发送消息时不必知道接收方的状态,更无需等待接收方的回复,而接收方在收到消息时也不必知道发送方的目前状态,更无需进行同步的消息处理,它们之间的连接完全是松耦合的,通信是非阻塞的,这种异步通信方式是由消息中间件中的消息队列及其服务机制保障的

    3. 能够消峰(通过队列的形式,防止一直访问服务)

      用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去

3.技术选型

Java端使用springboot2.0框架来搭建服务,使用MyBattisPlus操作数据库

消息中间键:本文针对的数据量不算特别大,也不需要很高的吞吐量,所以选用稳定且功能完备,spring集成的ActiveMQ

python端使用stomp消息传输框架来对ActiveMq的消息队列进行监督

4. 代码实现

SpringBoot2.0集成ActiveMq

添加pom文件

 <!--ActiveMq-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>
<!--消息队列连接池-->
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-pool</artifactId>
    <version>5.15.0</version>
</dependency>
构建一个生产者服务

java和ActiveMq相关的配置文件

  • 通过yml文件配置
server:
  port: 777 #生产者,微服务端口号
#ActiveMq
spring:
  activemq:
    broker-url: tcp://192.168.1.151:61616  #mq的位置(61616是后台的位置)
    user: admin
    password: admin
  jms:
    pub-sub-domain: false  #false为Queue  true为topic,默认为false,目前正在探索怎么队列和topic一起使用
processQueueName: activemq-queue-data-process
reciveQueueName: activemq-queue-result
trainQueueName: activemq-queue-data-train
reciveFigQueueName: activemq-queue-result_fig
reciveLogTopic: /topic/Log
  • config配置,注意**@Bean**注解的是对象的初始化函数,后面使用Autoware注入的时候,会自动的调用这个初始化函数,生成对应的对象
package com.atguigu.activemq.bootMqProduce.bootMqProduce.config;


import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.E
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaPython混合开发是一种将JavaPython两种编程语言结合使用的开发方法。它的目的是通过充分发挥两种语言的优势,来满足不同开发需求。 Java是一种面向对象的编程语言,它具有强大的跨平台性和丰富的类库支持。它可以用于开发大型企业应用、Web应用和移动应用等。而Python是一种简单易学的脚本语言,它具有清晰简洁的语法和强大的开发效率,被广泛应用于数据分析、人工智能、科学计算和Web开发等领域。 将JavaPython混合开发可以发挥两者的优势,提高开发效率和灵活性。比如,可以使用Java来开发底层的系统模块和高性能的算法,然后使用Python来编写测试脚本和数据分析脚本,以提高开发效率和减少开发周期。此外,JavaPython还可以通过调用对方的代码来实现相互调用和集成,使得应用具有更高的灵活性和可扩展性。 JavaPython混合开发还可以利用各自的生态系统Java拥有丰富的类库和框架,可以提供强大的功能和稳定性;而Python具有丰富的第三方库,例如NumPy、Pandas和TensorFlow等,可以提供丰富的数据分析和机器学习功能。开发者可以根据需求选择最适合的工具和环境,从而更加高效地完成任务。 总而言之,JavaPython混合开发可以充分发挥两者的优势,提高开发效率和灵活性,同时利用各自的生态系统,满足不同的开发需求。这种混合开发的方式在实际项目中被广泛应用,并取得了良好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值