- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
Mục tiêu chính của thư viện Java hiệu suất cao Agrona là giảm tắc nghẽn hiệu suất và cung cấp cho các nhà phát triển bộ đệm nguyên tử và trực tiếp an toàn theo luồng, danh sách kiểu nguyên thủy không có thao tác quyền anh, bản đồ và bộ sưu tập băm mở cũng như hàng đợi không khóa. khi xử lý các tình huống đồng thời và có độ trễ thấp.
Mã hóa nhị phân đơn giản (sbe) là một phần của Agrona và là một phần của khung truyền thông hiệu suất cao Aeron.
Khi nói đến rpc, nhiều người sẽ nghĩ ngay đến dubbo (trong nước) và grpc. Người ta ước tính rằng các dịch vụ đăng ký và khám phá cũng sẽ được liên kết với nó; nó cũng có thể được liên kết với các dịch vụ vi mô. Bạn có thể cảm thấy vấn đề này “cũ và nặng nề”, và bạn sợ! .
Trên thực tế, nó rất đơn giản. Khi bạn yêu cầu http, đó là yêu cầu rpc (gọi thủ tục từ xa). Điển hình nhất là yêu cầu http + json.
Ở đây chúng ta sẽ sử dụng hai plug-in khung solon quan trọng: một là plug-in công cụ httputils và cái còn lại là plug-in tuần tự hóa abc + agrona (abc được điều chỉnh cho phù hợp với nhiều sơ đồ mã hóa và giải mã).
org.noear solon-serialization-abc org .agrona agrona ${agrona-sbe.version org.noear solon-net-httputils
Tôi muốn cảm ơn khuôn khổ solon cho việc này, trong đó nhấn mạnh đến sự thống nhất ba ngôi (mvc và rpc được tích hợp một cách tự nhiên). Tiếp theo, hãy bắt đầu làm việc....
Xác định một lớp thực thể sbe ở đây. Lưu ý rằng giao diện SbeSerializable phải được triển khai.
@Getter @Setter public class MessageDo thực hiện SbeSerializable { id dài riêng tư; tiêu đề chuỗi riêng tư; @Override public void serializeRead(SbeInput in) { id = in.readLong(); title = in.readString(); (SbeOutput out) { out.writeLong(id); out.writeString(title); }
Trong dự án web solo, hãy thêm bộ điều khiển (chú thích có thể là @Remoting hoặc @Controller). Khi sử dụng @Remoting, không cần thêm chú thích @Mapping vào phương thức.
#Thêm plug-in org.noear:solon-web org.noear:solon-serialization-abc org.agrona:agrona:${agrona-sbe.version} # Cung cấp hỗ trợ tuần tự hóa sbe
@Mapping("/rpc/demo") @Remoting public class HelloServiceImpl { @Override public MessageDo hello(@Body MessageDo message) { //Bạn cũng có thể nhận các biến đường dẫn và yêu cầu thông báo trả về ngữ cảnh; } }
#Thêm plug-in org.noear:solon-net-httputils org.noear:solon-serialization-abc org.agrona:agrona:${agrona-sbe.version} # Cung cấp hỗ trợ tuần tự hóa sbe
// Mã ứng dụng @Component public class DemoCom { public MessageDo hello() { MessageDo message = new MessageDo(); // Chỉ ra rằng dữ liệu yêu cầu là ABC và dữ liệu nhận được phải là ABC return HttpUtils. http("http://localhost:8080/rpc/demo/hello") .serializer(AbcBytesSerializer.getInstance()) .header(ContentTypes.HEADER_CONTENT_TYPE, ContentTypes.ABC_VALUE) .header(ContentTypes.HEADER_ACCEPT, ContentTypes.ABC_VALUE) .bodyOfBean(message) .postAs(MessageDo.class);
Nói chung, không có sự khác biệt lớn so với json. Điều chính là chỉ định: bộ nối tiếp, loại nội dung và loại nhận để mỗi đầu có thể xác định loại dữ liệu.
Một số người chắc chắn sẽ cho rằng một giao diện là được, nhưng nếu có nhiều giao diện thì sẽ có rất nhiều mã yêu cầu http lặp lại được viết ra. Vì vậy, "annotation http client" rất quan trọng, đó cũng là lý do tại sao nhiều rpc framework phổ biến. Cũng giống như gọi giao diện cục bộ, hãy sử dụng giao diện từ xa.
nami là ứng dụng khách rpc (hoặc ứng dụng khách http được chú thích) của khung solon và hỗ trợ nhiều tuần tự hóa khác nhau. (Miễn là nó là ứng dụng khách http có chú thích "hỗ trợ tùy chỉnh tuần tự hóa" thì nó đều có sẵn!).
#添加插件 org.noear:nami-coder-abc # abc 编解码支持 org.noear:nami-channel-http # http 请求通道支持,也可以是 socketd(支持 tcp, udp, ws) org.agrona:agrona:${agrona-sbe.version} # 提供 sbe 序列化支持
@NamiClient(url = "http://localhost:8080/rpc/demo", headers = {ContentTypes.ABC, ContentTypes.ABC_ACCEPT}) public interface HelloService { MessageDo hello(@NamiBody MessageDo message); //方法2 //方法3 //方法4 //方法5 //方法6 } @Component public class DemoCom { @NamiClient //注入 HelloService helloService; public MessageDo hello() { MessageDo message = new MessageDo(); message.setId(3); rerturn helloService.hello(message); } }
最后此篇关于使用httputils+sbe(SimpleBinaryEncoding)实现金融级javarpc的文章就讲到这里了,如果你想了解更多关于使用httputils+sbe(SimpleBinaryEncoding)实现金融级javarpc的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1. Làm quen với Mã hóa nhị phân đơn giản (sbe) Mục tiêu chính của thư viện Java hiệu suất cao Agrona là giảm tắc nghẽn hiệu suất bằng cách cung cấp bộ đệm nguyên tử và trực tiếp an toàn theo luồng, danh sách kiểu nguyên thủy không có thao tác đóng hộp và bản đồ băm mở
Tôi có cấu trúc dữ liệu lồng nhau mà tôi đang cố gắng tích hợp với SBE. Một trong các đối tượng lồng nhau có thành viên chuỗi. Làm cách nào để xác định các trường có độ dài thay đổi cho các kiểu lồng nhau? Tôi có thể thiết kế lại bố cục đối tượng của mình nhưng tôi tò mò liệu điều này có được hỗ trợ hay không. Câu trả lời hay nhất từ tác giả SBE
Tôi không biết cách chuyển thuộc tính RID cho một khối nguồn ở một phạm vi khác, ví dụ: không thể đánh giá nó (org-entry-get nil "RID") trước khi chuyển nó sang hàm addSomething. Nó đang sử dụng #+CALL:
Bài viết này tổng hợp một số ví dụ mã của lớp uk.co.real_logic.sbe.xml.XmlSchemaParser trong Java và hiển thị cách sử dụng cụ thể của lớp XmlSchemaParser. Các ví dụ mã này chủ yếu là từ Githu
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.validate() trong Java, hiển thị XmlSchemaParser.validate()
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.addTypeWithNameCheck() trong Java, hiển thị XmlSchemaParse
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.addMessageWithIdCheck() trong Java, hiển thị XmlSchemaPars
Bài viết này đã biên soạn một số ví dụ mã của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.formatLocationInfo() trong Java, hiển thị XmlSchemaParser.
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.handleWarning() trong Java, hiển thị XmlSchemaParser.handl
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.forEach() trong Java, thể hiện chức năng của XmlSchemaParser.forEach()
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.findTypes() trong Java, hiển thị XmlSchemaParser.findTypes
Bài viết này đã biên soạn một số ví dụ mã của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.checkForValidName() trong Java, hiển thị XmlSchemaParser.c
Bài viết này đã tổng hợp một số mã ví dụ về phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.getAttributionValue() trong Java, hiển thị XmlSchemaParser.g
Bài viết này đã tổng hợp một số mã ví dụ về phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.getAttributionValueOrNull() trong Java, hiển thị XmlSchemaPa
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.getByteOrder() trong Java, hiển thị XmlSchemaParser.getByt
Bài viết này đã tổng hợp một số mã ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.findMessages() trong Java, hiển thị XmlSchemaParser.findMe
Bài viết này đã biên soạn một số ví dụ về mã của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.parse() trong Java, hiển thị cách sử dụng cụ thể của XmlSchemaParser.parse().
Bài viết này đã tổng hợp một số code ví dụ của phương thức uk.co.real_logic.sbe.xml.XmlSchemaParser.handleError() trong Java, hiển thị XmlSchemaParser.handleE
Tôi là một lập trình viên xuất sắc, rất xuất sắc!