「wsl开发Java」wsl开发python

博主:adminadmin 2022-12-25 14:15:10 140

今天给各位分享wsl开发Java的知识,其中也会对wsl开发python进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

TUXEDO调服务时,客户端返回tpcall错误:tpforward tpacall failure TPENOENT - no entry found。

Tuxedo介绍 原创

2016-04-02 21:23:02

11点赞

waterxcfg304

码龄14年

关注

1、Tuxedo介绍

Tuxedo 是什么?

Tuxedo是BEA公司(现已被Oracle公司收购)的一个客户机/服务器的“中间件”产品,它在客户机和服务器之间进行调节,以保证正确地处理事务。它用C语言技术开发的并且有很高性能。

TUXEDO是在、Internet 这样的分布式运算环境中开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。

Tuxedo 的主要作用是:

屏蔽分布式环境中各种通信协议、硬件体系结构、操作系统、数据库和其它应用服务等方面的差异,使分布于网络节点上的应用程序的各个单元部件之间能够进行互操作,并协调操作的一致性和完整性,最大限度地节省系统资源,提高系统性能。

* Tuxedo 已经广泛地应用于金融、电信、制造业等各行各业的核心业务系统。

三层架构

从左边往右依次为:客户端层(表现层),中间件服务层(业务逻辑层),数据库服务器层(数据层)。这种典型的三层架构应用非常广泛。对于应用weblogic中间件的系统一般采用的B/S架构,绝大部分采用HTTP协议,少量的系统用java编写的客户端,使用的是RMI 协议,或J2EE里的其它协议。

对于tuxedo中间件使用的是tuxedo协议,前端开发工具可以是各式各样,VC++ 、java 、Delphi 、VB 等。

Tuxedo 的通讯过程

Tuxedo 服务器处理请求的方式与apache有本质的区别。

Apache服务器处理请求,由客户端发出请求到服务器,由服务器对请求进行处理后将数据返回给客户端。

Tuxedo 服务器一次请求需要两次进行两次交互,Tuxedo有两个负责通讯的进程,一个为WSL,WSL的数量可以进行配置,典型的配置一般两、三个;WSH可以有N多个。客户端通过IP地址和端口号与WSL建立连接,由WSL认证请求是否合法,在WSL的响应中包含了另外一个IP地址和端口号;然后,客户端通过拿到的新的IP地址和端口号去请求WSH 。

客户端程序由GUI 与 Tuxeo通讯两部分组成,GUI部分主要由开发人员关心如何设计,通讯部分可能设计成几个函数供开发人员调用。对于性能测试人员可能更关心客户端与服务器之间的通讯过程。

2、tuxedo相关概念

IPC: Inter-Process Communication 进程间通信: 管道、信号量(semaphore)、共享内存(shared memory)、消息队列(Message Queue)。

管道是UNIX系统IPC的最古老形式,数据只能单向流动。

Tuxedo在客户机和服务器通信中大量使用UNIX系统的消息队列。

SSSO(Single Server Single Queue)模式:每个客户机都有一个响应队列来接受客户端请求。

MSSO(Multiple Server Single Queue)模式:多个服务器共享同一个请求队列。

信号量包含一个计数器,表示某个资源正在被访问和访问的次数,用来控制多线程对共享数据的访问。

Tuxedo使用共享内存存储公告牌,用来公告进程状态信息和需要在进程间共享或传递的数据。

-------------------------------------------------------------

Tuxedo的配置文件称为UBBCONFIG或ubb,包含了域(Domain)、逻辑机器(Machine)、服务器组(Group)、服务进程(Server)、服务(Service)的定义。运行前,需要把UBBCONFIG装载成二进制文件,称为TUXCONFIG。

Tuxedo服务启动时,执行tpsvrinit()函数,可以打开一些如数据库之类的资源供以后使用

Tuxedo服务停止时,执行tpsvrdown()函数,关闭资源

服务程序调用tpreturn()函数来结束服务请求,并返回一个缓冲区,必要时,将它传给客户程序。

--------------------------------------------------------

ATMI环境支持的C/S通信方式:请求/应答式通信、回话通信、队列通信、事件代理通信、消息通知

请求/应答式通信:同步调用(tpcall)、异步调用(tpacall)、嵌套调用、转发调用(tpforward)

转发调用和嵌套调用类似,不同的是最里层的嵌套服务可以直接给客户程序一个响应,而不必按照调用栈 逐级返回。

回话方式:tpsend()/tprecv() 基于事件,分通告和代理

void (**p)(): 定义了一个指向函数指针的指针p

tpsetunsol(p) : 将p指向的函数func设置为客户机的事件处理器。

tpchkunsol(): 检查意外事件

事件代理: tppost()/tpsubscribe() 消息发布/订阅

Tuxedo提供了两个事件代理器(TMUSREVT TMSYSEVT)来处理订阅请求。

队列存储: tpenqueue() / tpdequeue()

Tuxedo/Q用到了Tuxedo提供的两个服务器:消息队列服务器(TMQUEUE)和消息转发服务器(TMQFORWARD)

---------------------------

多系统多机之间通信需要每台机器上都有一个Bridge进程,通过TCP/IP通信,Bridge进程维持一个长连接,一旦建立不会断掉。

TUXEDO应用系统的客户端访问TUXEDO服务器上的服务的过程图:

说明:

WS(Workstation Extension Product)用于指TUXEDO产品的客户端部分

WSC Workstation Client

WSL(Workstation Listener) TUXEDO系统自带的一个SERVER,它侦听一个指定的端口,WSC最初与该SERVER建立连接

WSH(Workstation Handler)TUXEDO系统自带的一个SERVER,由它处理WSC与TUXEDO SERVER之间的通讯。

Bulletin Board(公告板)TUXEDO把系统的配置保存在一个共享内存中,该共享内存称为公告板(BB)

BBL TUXEDO的管理进程,主要对公告板等进行管理

Workstation Client与TUXEDO SERVER建立连接的过程为:

1. WSC 调用tpinit()或tpchkauth()

2. WSC采用在WSNADDR中指定的IP地址与服务端的WSL建立连接

3. WSL为该WSC指定一个WSH,并把该WSH的侦听端口返回给WSC

4. WSC采用返回的端口与指定的WSH建立连接,并与WSL断开连接,这之后WSC与TUXEDO SERVER之间的通讯通过WSH进行处理,与WSL无关。

5. tpinit()或tpchkauth()调用返回。

----------------------------------------------------------

单域模式Single-Domain Model。单机模式 Single Host Model, 多机模式Multi-Processor Model

多域模式Multi-Domain Model

初步完成 manjaro-linux-for-wsl

我是最近才了解 Manjaro Linux 这个发行版本,基于 archlinux,对用户很友好的一个发行版本。archlinux 的一个优势,软件很丰富,可以滚动升级;这个就比较吸引我,在 windows 10 的 WSL 下做开发环境比较合适

在网上了找 在 windows 10 WSL 下安装 Manjaro Linux,找到了下面 2 篇文章,安装真的很复杂

后来看到官方有 manjaro-bootstrap 这个项目,可以制作 Manjaro Linux bootstrap 。所以就有了 manjaro-linux-for-wsl 这个项目,专门为 windows 10 WSL 而做的一个 Manjaor Linux 版本

项目地址:

WSL2 搭建 Rancher 开发环境

@author Fu Kai

@since 20211128

一、 安装 WSL2

二、 安装 Rancher-2.5.x

三、 配置容器镜像源

四、 添加主机静态路由

五、helloworld 案例

不多说

service docker start

安装 docker-compose

这里给出我的 docker-compose

启动要耗费一些时间,需要耐心

Docker 中安装 Rancher 默认使用的 K3s,K3s 是 K8s 的精简版,底层不是用 docker 而是用的 containerd,配置容器镜像源会和 docker 不同。

进入 rancher 容器

docker exec -it rancher-2.5.11 /bin/bash

vi /etc/rancher/k3s/registries.yaml

配置自己的阿里云 docker 镜像或者其它国内镜像

exit 退出 rancher 容器

docker restart rancher-2.5.11 重启 rancher 容器

默认情况下每次重启 WSL2 系统都会给 WSL2 重新分配 IP 地址,截止 20211128,WSL2 还不能固定 IP

现在有效的做法可以通过建立网络适配器固定 WSL2 的 IP

新建.bat 文件,写入下面两行后以 管理员 执行

其中 Ubuntu-20.04 是通过 cmd wsl --list 命令获得(发行版 Unbutu 升级后可能就不是 20.04 了)

主机 cmd 执行 ipconfig /all

执行后会在本机虚拟网卡 vEthernet (WSL) 中增加一个固定 IP 192.168.153.128

WSL2 执行 ifconfig

在 WSL2 中新增一块虚拟网卡 eth0:1 拥有固定 IP 192.168.153.129

上图 IP 172.25.32.1 不断变化,目前没办法固定,固定的是自定义的 192.168.153.128

主机 →WSL2: ping 192.168.153.129

WSL2→ 主机: ping 192.168.153.128

如上配置好后就可以通过 192.168.153.129 访问 WSL2 容器,如果 WSL2 中启动了一个映射 3306 端口的容器,则通过 192.168.153.129:3306 就可以直接访问到

但访问 Rancher 部署的应用就会有问题

部署好后 helloworld0 生成了随机端口 31928

鼠标悬浮在端口号上,发现跳转的 URI 是 172.172.172.14:31928

使用 Docker 部署的 Rancher 会使用 iptables 直接做端口的映射,即在 run 容器的时候不使用-p 指定端口映射也没关系,iptables 会直接映射这些端口

即,此例中 helloworld0 映射 31928 端口,我通过 172.172.172.14:31928 可以在 WSL2 环境直接访问到这个 helloworld0

说明使用 Rancher 部署的 helloworld0 没有问题

在 WSL2 中访问没问题了,那主机访问有没有问题呢?

这里会涉及到网络的知识, 172.172.172.14 与 192.168.153.129 属于 WSL2 的不同网段,访问 192.168.153.129 并不能访问到 172.172.172.14 ,属于跨网段,这时需要添加静态路由表自定义路由

首先

在 WSL2 中执行命令 iptables -P FORWARD ACCEPT (临时,重启后失效) 允许路由转发

(永久暂不知道如何配置)

然后

在主机管理员 cmd 执行 sc start RemoteAccess

然后执行 route add -P 172.172.0.0 mask 255.255.0.0 192.168.153.129

主机访问 172.172.0.0 这个网段的内容,指定下一跳为 192.168.153.129 ,再到 WSL2 中找到 172.172.172.14

ping 172.172.172.14 可以 ping 通

最后从网页访问可以访问到 rancher-helloworld 页面

[1] wsl2 中 docker 内部网络的端口转发.

WSL通过导入导出linux子系统快速配置开发环境

列出所有子系统并查看子系统名称

wsl -l

导出当前子系统

wsl --export Ubuntu-18.04 d:\ubuntu18_export.tar

导入子系统

wsl --import ubuntu18 d:\wsl\ubuntu d:\ubuntu18_export.tar

修改默认启动用户

echo -e "[user]\ndefault=oduser" /etc/wsl.conf

强行关闭并重启

wsl --shutdown

参考wsl命令参数

wsl是什么意思?

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。

它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

WSL包含内容:

WSL是一些组件的集合,允许原生的Linux ELF64二进制文件跑在Windows上。它同时包括了用户态和内核态组件,主要包含以下部分:

1、用户态会话管理服务处理Linux实例的生命周期。

2、Pico provider drivers (lxss.sys, lxcore.sys)“翻译”系统调用,以模拟Linux内核。

3、Pico进程管理原生的用户态Linux(比如/bin/bash)。

WSL 使用教程

WSL 是适用于 Linux 的 Windows 子系统,可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

WSL 分为两个版本,一个是 WSL1,一个是 WSL2,WSL2 是 WSL1 的升级版,主要优势是:

WSL2 建议不要跨操作系统使用文件,若想获得最快的性能速度,请将文件存储在 WSL 文件系统中,在存储时,使用 Linux 文件系统根目录: \\wsl$\Ubuntu-20.04\home\user name\Project 。

访问 WSL2 文件系统,可以运行命令 WIN+R 或在文件资源管理器地址栏中键入 \\wsl$ ,以查找相应的分发名称并访问其根文件系统。

大多数情况下我们会使用 WSL2,但在以下情况,请考虑使用 WSL1:

可以使用 localhost 从 Windows 上访问 Linux 分发版中的应用。

如果要从 Linux 分发版访问 Windows 上运行的网络应用,则需要使用主机的 IP 地址。 你可以执行以下步骤来使其可行。

当使用远程 IP 地址连接到应用程序时,它们将被视为来自局域网 (LAN) 的连接。 这意味着你需要确保你的应用程序可以接受 LAN 连接。例如,你可能需要将应用程序绑定到 0.0.0.0 而非 127.0.0.1 。

当使用 WSL 1 分发版时,如果计算机设置为可供 LAN 访问,那么在 WSL 中运行的应用程序也可供在 LAN 中访问。

这不是 WSL 2 中的默认情况,WSL 2 有一个带有其自己独一无二的 IP 地址的虚拟化以太网适配器。 目前,若要启用此工作流,你需要执行与常规虚拟机相同的步骤。下面是一个示例 PowerShell 命令,用于添加侦听主机上的端口 4000 的端口代理并将其连接到端口 4000,并使用 IP 地址 192.168.101.100 连接到 WSL 2 VM。

使用 wsl Linux命令 可以在 CMD 或 PowerShell 运行 Linux 命令,示例:

以这种方式运行的命令使用的是同一个工作目录,并且以 WSL 默认用户的身份运行,拥有与调用方进程和终端相同的 Windows 管理权限。

WSL 可以使用 [tool-name].exe 直接从 WSL 命令行运行 Windows 工具。 例如, notepad.exe 。

以这种方式运行的应用程序具有相同的工作目录,拥有与 WSL 进程相同的权限,以活动 Windows 用户的身份运行,显示在 Windows 任务管理器中。

WSL 还有一些高级用法,比如更改磁盘大小,文件权限,环境变量等,具体配置可以参考官方文档。

wsl开发Java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于wsl开发python、wsl开发Java的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。