Im Interview wird der Interviewer leicht gefragt:
Wie entwerfe ich ein RPC-Framework?
Vielleicht wurdest du nicht gefragt, vielleicht hast du Glück, oder vielleicht bist du noch nicht auf diesem Niveau. Normalerweise beträgt das Monatsgehalt mehr als 20.000 und sie stellen grundsätzlich einige Designfragen.
Aus Sicht des Interviewers: Diese Art von Frage zu stellen ist besser als einen achtteiligen Aufsatz zu stellen, der viele technische Punkte beinhaltet. Zum Beispiel: Kenntnisse über Entwurfsmuster, Kommunikationsprotokolle, dynamische Agenten, Virtualisierung, Thread-Pools usw.
Okay, gehen wir nicht zu weit, fangen wir an, über das heutige Thema zu reden.
RPC ist ein Remote-Prozeduraufruf. Viele Leute verstehen diese Worte möglicherweise nicht besonders:
Zum Beispiel der folgende Fall: Ein Benutzer betreibt einen Dienst:Rufen Sie einen Remote-Dienst auf, genau wie den Aufruf einer lokalen Methode.
public interface UserService{ String findUserNameById(Integer userId); } @Service public class UserServiceImpl implements UserService{ String findUserNameById(Integer userId){ //查数据或查缓存获取到用户名 return "田哥" } }
@RestController public class UserController{ @Resource private UserService userService; @GetMapping("/test") public String test(){ return userService.findUserNameById(1); } }
Unter der Annahme, dass sich die drei Klassen UserController, UserServiceImpl und UserService alle im selben Projekt befinden, ist es für den Controller sehr einfach, die Methode findUserNameById aufzurufen.Wenn der Controller jedoch ein anderes Projekt ist und wie oben aufgerufen werden möchte (feiner Unterschied, das Gefühl ist immer noch das gleiche), dann können wir das RPC-Framework verwenden.
1. Die Schnittstelle UserService muss in einem separaten Projekt platziert werden, das wir normalerweise als API-Projekt bezeichnen. 2. UserServiceImpl muss in einem separaten Projekt platziert werden, das wir normalerweise als Provider-Projekt bezeichnen. 3. Controller, durch Web- und andere (Verbraucher-)Projekte4. Geben Sie die API in ein JAR-Paket ein und verweisen Sie dann sowohl im Verbraucherprojekt als auch im Anbieterprojekt darauf.
Die auf dem Markt erhältlichen RPC-Frameworks wie Dubbo (Alibaba), Thrift (FaceBook), gRpc (Google), brpc (Baidu) usw. konzentrieren sich alle auf unterschiedliche Aspekte, um den ursprünglichen Zweck zu lösen Seien Sie extrem perfekt, und manche wollen Perfektion erreichen, während andere extreme Einfachheit bevorzugen.
Zurück zu dem, was wir zuvor gesagt habenRufen Sie einen Remote-Dienst wie einen Ortsgespräch an, welche technische Unterstützung wird benötigt?
UserService
und keine Implementierungsklassen hat. Möchten Sie eine Methode einer Schnittstelle aufrufen? Dann können Sie nur ein Proxy-Objekt erstellen. 启动日志:
访问:http://localhost:8090/test
成功!整个过程,非常轻松地集成mink框架并在业务代码中使用。
总结起来,其实就三步:
1、pom中添加依赖
2、properties文件中配置注册中心信息
3、使用的时候加上注解@MinkReference
或 @MinkService即可
Das obige ist der detaillierte Inhalt vonDas handgeschriebene RPC-Framework dient wirklich nicht nur dazu, so zu tun, als wäre man 13!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!