The SOFARPC recommended in this issue is a highly scalable, high-performance, production-grade Java RPC framework.
Project Description
SOFARPC is committed to simplifying RPC calls between applications and providing applications with convenient, transparent, stable and efficient point-to-point remote service invocation solutions. For the convenience of users and developers to extend the functionality, SOFARPC provides a rich model abstraction and extensible interface, including filters, routing, load balancing and so on. At the same time, it provides rich microservice governance schemes around SOFARPC framework and its peripheral components.
Features
- Transparent, high-performance remote service invocation
- Supports multiple service routing and load balancing policies
- Support for integration of multiple registries
- Supports multiple protocols, including Bolt, Rest, Dubbo, etc.
- Support synchronization, one-way, callback, generalization and other call methods
- Support cluster fault tolerance, service preheating, automatic fault isolation
- Powerful expansion function, you can expand each functional component on demand
Start using SOFABoot
Note that the code example requires a local installation of the zookeeper environment. If not, you need to delete it
Com. Alipay. Sofa. RPC. Registry. The address configuration application. The properties to use local file as a registry.
< Create project
- Prepare the environment: SOFABoot requires JDK7 or JDK8 and needs to be compiled with Apache Maven 2.2.5 or later.
- Building SOFABoot projects: SOFABoot is based on Spring Boot. So you can use Spring Boot’s project generation tool to generate a standard Spring Boot project.
- Add SOFABoot dependency: The generated standard Spring Boot project uses the Spring parent dependency directly and needs to be changed to the parent dependency provided by SOFABoot. The parent dependency provides and manages the various starters provided by SOFABoot.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<relativePath/>
</parent>
Replace the above with the following:
<parent>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofaboot-dependencies</artifactId>
<version>3.0.0</version>
</parent>
1.Configure application.properties: application.properties is the configuration file in the SOFABoot project. You need to configure the application name here.
spring.application.name=AppName
2. Import RPC initiator:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>rpc-sofa-boot-starter</artifactId>
</dependency>
3. Declare SOFABoot’s xsd file:
In the XML configuration file to use, configure the declaration for the header xsd file as follows. This enables development using XML elements defined by SOFABoot.
<?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"
Define the service interface and implement
public interface HelloSyncService {
String saySync(String string);
}
public class HelloSyncServiceImpl implements HelloSyncService {
@Override
public String saySync(String string) {
return string;
}
}
Publishing a service on a server
Configure the following in the xml file. When the Spring context is refreshed, SOFABoot registers the service implementation on the server side, communicates with the client through the Bolt protocol, and publishes metadata such as addresses to the registry (using local files as the registry by default).
<bean id="helloSyncServiceImpl" class="com.alipay.sofa.rpc.samples.invoke.HelloSyncServiceImpl"/>
<sofa:service ref="helloSyncServiceImpl" interface="com.alipay.sofa.rpc. samples.invoke.HelloSyncService"
<sofa:binding.bolt/>
</sofa:service>
Customer Reference Service
Configure the following in the xml file. When the Spring context is refreshed, SOFABoot generates an RPC proxy bean personReferenceBolt,. This allows you to use the bean directly in your code to make remote calls.
<sofa:reference id="helloSyncServiceReference" interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService">
<sofa:binding.bolt/>
</sofa:reference>
Run item
The SpringBoot boot class code is as follows. The above xml file is loaded here using ImportResource.
@ImportResource({ "classpath*:rpc-sofa-boot-starter-samples.xml" })
@org.springframework.boot.autoconfigure.SpringBootApplication
public class SofaBootRpcSamplesApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(SofaBootRpcSamplesApplication.class);
ApplicationContext applicationContext = springApplication.run(args);
HelloSyncService helloSyncServiceReference = (HelloSyncService) applicationContext
.getBean("helloSyncServiceReference");
System.out.println(helloSyncServiceReference.saySync("sync") );
}
}
Road map