sofa框架server-client搭建

BSP工程师的内核必修课:1.1. 初识Linux内核 我不喜欢像很多Linux书籍一样从"盘古开天"开始讲起,我们简单的介绍一下Linux内核,其中很多方面在这里不做过多的讨论,让大家快速了解即可,否则既控制不住篇幅,也无法深入讲解。Linux内核顾名思义,它是Linux系统的核心,扮演者“大管家”的角色对硬件资源例如CPU、内存、硬盘进行统一管理实现硬件资源应用程序之间的抽象、中介管理,让软件开发者无需关心硬件细节将复杂的功能划分为若干相对独立又紧密写作的子系统。 阅读详情

sofa框架server-client搭建

采用工具IDEA,组件添加完成spring-boot构建插件

jdk版本8.0以上,构建工具maven

第一步创建工程 SofaDemoServer 和 SofaDemoClient

 

 

SofaDemoClient 和 SofaDemoServer 的创建方式一样就不再重复了。

第二步配置 SofaDemoServer 和 SofaDemoClient 的pom.xml文件

注释掉原来的spring-boot的配置,修改为 sofa

	<!--<parent>-->
	<!--<groupId>org.springframework.boot</groupId>-->
	<!--<artifactId>spring-boot-starter-parent</artifactId>-->
	<!--<version>2.0.5.RELEASE</version>-->
	<!--<relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
	<!--</parent>-->

	<parent>
		<groupId>com.alipay.sofa</groupId>
		<artifactId>sofaboot-dependencies</artifactId>
		<version>2.3.2</version>
	</parent>

导入的maven包也是一样

	<dependencies>
		<dependency>
			<groupId>com.alipay.sofa</groupId>
			<artifactId>rpc-sofa-boot-starter</artifactId>
		</dependency>
		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-web</artifactId>-->
		<!--</dependency>-->

		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-test</artifactId>-->
			<!--<scope>test</scope>-->
		<!--</dependency>-->
	</dependencies>

第三步 配置 SofaDemoServer

在src->main->resource下创建 spring文件下 ,并且在spring文件夹下创建 rpc-sofa.xml

rpc-sofa.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sofa="http://sofastack.io/schema/sofaboot"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://sofastack.io/schema/sofaboot http://sofastack.io/schema/sofaboot.xsd"
       default-autowire="byName">

    <bean id="helloSynServiceImpl" class="com.example.demo.HelloSynServiceImpl" />
    <sofa:service ref="helloSynServiceImpl" interface="com.example.demo.HelloSynService">
        <sofa:binding.bolt/>
    </sofa:service>


    <!-- <sofa:reference id="helloSynServiceReference" interface="com.example.demogrowth.HelloSynService">
        <sofa:binding.bolt/>
    </sofa:reference> -->


</beans>

创建 HelloSynService.java

package com.example.demo;

public interface HelloSynService {
    String saySync(String str);
}

创建 HelloSynServiceImpl.java

package com.example.demo;

public class HelloSynServiceImpl implements HelloSynService {
    @Override
    public String saySync(String str){
        return str;
    }
}

修改SofademoserverApplication.java

@ImportResource({"classpath*:spring/rpc-sofa.xml"})
@SpringBootApplication
public class SofademoserverApplication {

	public static void main(String[] args) {
		SpringApplication springApplication = new SpringApplication(SofademoserverApplication.class);
		ApplicationContext applicationContext = springApplication.run(args);
//		SpringApplication.run(SofademoserverApplication.class, args);
	}
}

最后给服务端配置上名称和端口号

application.properties

server.port=8082
spring.application.name=SofaDemoServer

第四步:配置 SofaDemoClient

在src->main->resource下创建 spring文件下 ,并且在spring文件夹下创建 rpc-sofa.xml

rpc-sofa.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sofa="http://sofastack.io/schema/sofaboot"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://sofastack.io/schema/sofaboot   http://sofastack.io/schema/sofaboot.xsd"
       default-autowire="byName">

    <sofa:reference id="helloSynServiceReference" interface="com.example.demo.HelloSynService">
        <sofa:binding.bolt/>
    </sofa:reference>

</beans>

创建 HelloSynService.java

package com.example.demo;


public interface HelloSynService {
    String saySync(String str);
}

修改 SofademoclientApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ImportResource;

@ImportResource({"classpath*:spring/rpc-sofa.xml"})
@SpringBootApplication
public class SofademoclientApplication {

	public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(SofademoclientApplication.class);
        ApplicationContext applicationContext = springApplication.run(args);
        HelloSynService helloSynServiceReference = (HelloSynService)applicationContext.getBean("helloSynServiceReference");
        System.out.println(helloSynServiceReference.saySync("sync"));
//		SpringApplication.run(SofademoclientApplication.class, args);
	}
}

最后配置application.properties

server.port=8081
spring.application.name=SofaDemoClient

 

ok到此完成了基本的构建。先启动 SofaDemoServer 然后启动 SofaDemoClient 调用成功会出现如下日志:

client日志

2018-09-17 14:42:44.410  INFO 9584 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-09-17 14:42:44.421  INFO 9584 --- [           main] o.s.c.support.DefaultLifecycleProcessor  : Starting beans in phase 0
2018-09-17 14:42:44.548  INFO 9584 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)
2018-09-17 14:42:44.553  INFO 9584 --- [           main] c.e.demo.SofademoclientApplication       : Started SofademoclientApplication in 5.241 seconds (JVM running for 5.798)
sync

最后给大家demo下载地址

https://download.csdn.net/download/kevin2562/10671626

linux驱动工程师linux BSP工程师的区别 obsidianLinux BSP 开发工程师 Linux 驱动开发工程师。 阅读详情

相关推荐

嵌入式Linux BSP开发实战:从i.MX架构解析到自定义硬件移植

在嵌入式Linux开发中,板级支持包是连接通用内核特定硬件的关键桥梁。其核心原理在于通过分层架构实现硬件抽象,其中机器特定层负责处理器架构相关的底层初始化,如中断控制器、内存映射时钟配置,而通用设备驱动层则基于此驱动具体外设。这种设计的技术价值在于实现了硬件无关性,使上层应用能通过标准接口访问硬件,极大提升了代码的可移植复用性。在应用场景上,BSP广泛应用于工业控制、消费电子物联网设备中,为复杂应用处理器如NXP i.MX系列提供基础支持。本文以i.MX BSP为例,深入剖析其架构设计,并详解如何

weixin_29540599的博客 278

Linux BSP 移植:从 bootloader 到 rootfs 要一条线看

Linux BSP 移植要从 bootloader 到 rootfs 一条线看。启动日志、bootargs、设备树、外设验收构建版本缺一不可。能启动只是开始,能稳定交付才算完成。

qq_42431428的博客 3917

i.MX8QXP平台Linux BSP移植实战:从SCFW到内核的完整指南

嵌入式Linux系统移植是嵌入式开发的核心技能,涉及将操作系统适配到特定硬件平台。其原理在于通过板级支持包(BSP)对硬件抽象层进行定制,实现引导程序、内核硬件的协同。这项技术的价值在于能够基于成熟处理器平台快速开发定制化嵌入式产品,广泛应用于汽车电子、工业控制等领域。本文聚焦于NXP i.MX8QXP这一高性能应用处理器平台,深入剖析其复杂的多阶段启动链条,涵盖SCFW(系统控制器固件)资源分区、U-Boot设备树适配等关键环节,并提供了从镜像打包到内核驱动的全流程实战解析,为工程师进行定制化板卡开发提

weixin_29158047的博客 372

Linux 内核驱动 AI 加速器 BSP 移植:从设备树到异构计算的工程链路

Linux 内核驱动 AI 加速器 BSP 移植的核心链路是:设备树配置 → 驱动匹配 probe → 内存映射 DMA → 中断注册 → 用户态接口。设备树的compatible字符串是驱动加载的入口,配错了驱动根本加载不了。DMA 内存管理得根据数据大小访问模式选一致性缓冲区或流式映射。异构计算的通信机制靠共享内存门铃中断,超时保护是防止固件异常把内核挂死的关键。落地时得盯住三个点:设备树中断号内核 IRQ 编号的转换关系;大块推理数据用流式 DMA 映射而不是一致性缓冲区;

qq_42431428的博客 3086

LinuxLinux驱动开发BSP开发:嵌入式系统的两大基石

Linux驱动开发BSP开发是嵌入式系统不可分割的两个组成部分。驱动开发专注于单个硬件设备的使能控制,而BSP开发则确保整个系统能够在特定硬件平台上正常启动运行。两者通过设备树等机制紧密协作,共同构建了嵌入式Linux系统的软硬件桥梁。无论选择哪个方向,扎实的C语言功底、对计算机体系结构的理解以及持续学习的能力都是必不可少的。在实际项目中,驱动开发BSP开发往往需要紧密配合,因此理解对方的工作内容挑战,对于成为一名优秀的嵌入式工程师至关重要。

撬动未来的支点的专栏 1669

嵌入式Linux驱动BSP到底啥关系?老工程师一句话点破

昨天在技术群里,有个刚入行的小伙伴问了一个问题:”我看招聘平台上,有的公司要招Linux驱动工程师,有的要招BSP工程师,他们到底有啥区别?“没想到这个问题一下子炸出了好多潜水的老师傅。一位干了十几年的老工程师只说了一句话:”BSP是包工头,驱动是水电工。“这话一下子把大家都逗乐了,但也确实形象。

微信公众号:互联网之路 732

Linux 内核驱动开发 BSP 移植:从设备树到内核模块的系统构建

BSP 移植的核心是理清设备树、驱动总线的匹配关系。设备树描述硬件,驱动操作硬件,总线负责匹配——三者缺一不可。驱动开发中,资源申请必须使用devm_*系列函数确保自动释放,中断处理必须区分上半部下半部,寄存器访问必须使用而非直接指针解引用。落地路径:先用厂商 BSP 验证硬件可用性,确认所有外设正常工作;再逐步将驱动代码从厂商私有目录迁移到标准内核目录结构中;最后建立自动化构建脚本,确保每次内核配置变更后都能一键编译出完整的 BSP 镜像。移植不是一次性工作,而是随着硬件迭代持续适配的过程。

qq_42431428的博客 2801

i.MX Linux BSP深度解析:从MSL原理到驱动开发移植实践

在嵌入式Linux开发中,板级支持包(BSP)是连接通用内核特定硬件的关键软件层,其核心在于实现硬件抽象驱动支持。BSP通过机器特定层(MSL)管理中断控制器、系统定时器、内存映射引脚复用等底层硬件资源,为上层应用提供稳定的运行基础。理解中断号映射、时钟源配置以及设备树描述等原理,对于开发稳定高效的嵌入式系统至关重要。这些技术广泛应用于工业控制、物联网网关多媒体设备等场景。本文聚焦于NXP i.MX系列处理器的Linux BSP,深入探讨其中断控制器(GIC)系统定时器(GPT/EPIT)等核心模

weixin_31974659的博客 235

嵌入式Linux驱动开发 vs BSP:入门选imx6ull还是rk3588?薪资如何?

驱动开发BSP开发是嵌入式Linux领域两个紧密相关但又各有侧重的方向。驱动开发更专注于让特定硬件设备工作,而BSP开发则是为整个硬件平台构建基础运行环境。对于初学者,从i.MX6ULL这样的简单平台开始是明智的选择,待基础扎实后,再向RK3588等更复杂的平台迈进。这个领域技术更新迭代很快,但核心原理变化不大,打好基础是关键。薪资方面,嵌入式Linux驱动BSP开发工程师的待遇整体不错,而且随着经验的积累,薪资增长空间很大。无论选择哪个方向,深入掌握其中一个都能在职业生涯中获得良好的回报。

微信公众号:互联网之路 1148

xilinx_axidma 驱动移植使用

需要在ZYNQ平台上使用DMA驱动,裸机的还到好说,Linux下的DMA驱动框架复杂,这对本身不是搞驱动的我难度太大。自己动手丰衣足食,但是试错成本很大,记录下来希望能给后来者帮助。

qianshuyuankk的专栏 8426

高通MTK平台驱动开发实战:从零开始移植Linux内核驱动

本文深入探讨了在高通MTK平台间移植Linux内核驱动的实战经验。文章从理解两大平台在设备树、时钟、中断、电源管理等核心架构的根本差异入手,通过具体的设备树适配、驱动代码修改、构建系统集成以及调试验证等步骤,提供了一套从零开始的完整移植指南,旨在帮助嵌入式工程师高效应对跨平台开发的挑战。

weixin_29168153的博客 303

Lichee开发板Android 4.0系统移植extract-bsp工具详解

嵌入式系统开发中,BSP(Board Support Package)作为连接硬件操作系统的关键中间层,承担着设备驱动管理系统引导等重要功能。在ARM架构的Android系统移植过程中,开发工具链的合理配置镜像处理尤为关键。extract-bsp作为Lichee开发板专用工具,能够智能解析原始镜像并按照Android文件系统规范重组目录结构,显著提升系统部署效率。该工具支持内核模块提取、权限管理、分区大小控制等核心功能,特别适用于工业控制、智能终端等需要Android 4.0(Ice Cream Sa

668

ARM开发板Linux内核移植实战:从源码编译到驱动适配的5个核心步骤

本文详细介绍了ARM开发板Linux内核移植的5个核心步骤,包括开发环境搭建、内核配置交叉编译、设备树定制、启动加载调试以及驱动开发外设适配。针对树莓派等成熟开发板通用ARM开发板的区别,提供了实用的技术指导优化建议,帮助开发者高效完成BSP构建。

weixin_33984032的博客 411

i.MX平台BSP移植实战:从内核到U-Boot的深度定制调试

在嵌入式系统开发中,板级支持包(BSP移植是实现操作系统特定硬件平台深度适配的关键技术。其核心原理在于通过设备树、Kconfig等标准化框架,将硬件驱动操作系统核心解耦,从而实现同一款SoC在不同硬件产品中的高效复用。这项技术的核心价值在于,它使开发者能够将芯片的强大潜力释放到千变万化的终端产品中,是连接芯片原厂参考设计最终定制化产品的桥梁。在工程实践中,BSP移植涉及交叉编译环境搭建、内核配置裁剪、引导程序深度定制以及内存系统调校等一系列复杂步骤,最终需要在Yocto Project这样的工业级构

cuifan5176的博客 422

第23章Linux设备驱动移植Linux内核的移植

23.5 Linux内核的移植        Linux 内核的移植主要含义是将 Linux 内核运行于一块新的 SoC 芯片或一块新的电路板之上,其实质含义就是建立 Linux 的板级支持包(BSP)。BSP 的本质作用有二:为内核的运行提供底层支撑;屏蔽板相关的硬件细节。对于 ARM ,BSP 代码位于 arch/arm/的各个 plat mach目录下,结构如下:plat-xxxlin...

xiezhi123456的博客 743

RT-Thread移植NUC980实战:从BSP适配到驱动调试全解析

实时操作系统(RTOS)是嵌入式开发中平衡资源、性能实时性的关键技术,其核心在于提供确定性的任务调度中断响应。RT-Thread作为一款国产开源RTOS,以其组件化、高实时性及对POSIX标准的支持,在工控、物联网网关等场景中广泛应用。其技术价值在于为资源受限的ARM9等微控制器提供了类似Linux的丰富生态开发体验,同时保证了硬实时性能。在具体工程实践中,将RT-Thread移植到新唐NUC980这类高性能工控芯片上,涉及BSP(板级支持包)创建、时钟树配置、内存映射修改等关键步骤。例如,通过借鉴N

weixin_30321709的博客 375

linux驱动移植的重要数据结构(一)

<br />对于嵌入式 Linux 系统来说,有各种体系结构的处理器硬件平台,并且用户需要根据需求自己定制硬件板。只要是硬件平台有些变化,即使非常小,可能也需要做一些移植工作。内核移植是嵌入式Linux系统中最常见的一项工作。<br />内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及 Linux 内核通用的程序。<br />移植的难度也取决于两种硬件平台的差异。Linux 对于特定的硬件平台的软件就叫作 BSP (Board Support Package)。<br />由于 Linux 内核具备

bombing的专栏 729

模型也会“越用越聪明”:AI模型私有化部署平台DLTM的版本管理持续迭代体系

有了版本,还要能“比”。

NVR安防视频技术 216
上一篇: application.properties 切换到 application.yml
下一篇: SOFARPC主要模块介绍
kevin2562
博客等级 码龄20年 8粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值