Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ​​​​​​​xml (extensible markup language)

    XML (EXTENSIBLE MARKUP LANGUAGE)

    XML là một ngôn ngữ đánh dấu, trong đó hiển thị thông tin giữa hai nhãn mô tả. XML là một tập hợp lớn hơn của HTML. HTML ban đầu được thiết kế để mô tả các định dạng trang web. Các thông tin được mô tả có cấu trúc sẽ giúp các dữ liệu có thể được truyền giữa các hệ thống khác nhau. Toàn bộ các tài liệu XML được lưu trữ như là dạng file văn bản, cả máy và người đều có thể hiểu các tài liệu này.

    Ví dụ dưới đây sẽ mô tả một văn bản hiển thị ở dạng XML. Với XML, chúng ta có thể gán một số ý nghĩa đến các tags bên trong văn bản. Chúng ta cũng có thể trích xuất rất nhiều các thuộc tính từ các kết quả trả về bằng cách định vị phần nội dung được bao bọc bởi <study_room>
    </study_room>;


    <?xml version="1.0" encoding="UTF-8" ?>
    <root>
    <home>this is my house</home>
    <home>located in San Jose, CA</home>
    <rooms>
    <living_room>true</living_room>
    <kitchen>false</kitchen>
    <study_room>
    <size>20x30</size>
    </study_room>
    <study_room>
    <desk>true</desk>
    </study_room>
    <study_room>
    <lights>On</lights>
    </study_room>
    </rooms>
    </root>
      1. JSON (JAVASCRIPT OBJECT NOTATION)

    Định dạng JSON bắt nguồn từ cú pháp mô tả một đối tượng trong JavaScripts, nó cũng được mô tả bằng định dạng text. Định dạng JSON có dạng cặp khóa:giá trị, được bao bọc bên trong dấu ngoặc nhọn {} và dấu ngoặc vuông []. Định dạng JSON thì dễ đọc và có hình thức nhẹ, không rắc rối. Một cặp khóa:giá trị được tách biệt với các cặp khóa:giá trị khác bằng dấu phẩy. Các khóa keys trong JSON có dạng dữ liệu là các chuỗi ký tự (string). Còn phần giá trị của khóa là một trong các kiểu dữ liệu như sau:
    • Dạng chuỗi ký tự.
    • Dạng số (number).
    • Một đối tượng object
    • Dạng dãy (array)
    • Boolean (true or false)
    • Null

    Ví dụ dưới đây mô tả một văn bản hiển thị ở dạng JSON. Nếu chúng ta quan tâm đến trạng thái của các bóng đèn trong study_room, bạn hãy xem các giá trị được hiển thị. Sau đó hãy trích xuất các giá trị từ kết quả trả về bằng cách định vị các cặp khóa/giá trị.

    {
    "home": [
    "this is my house",
    "located in San Jose, CA"
    ],
    "rooms": {
    "living_room": "true",
    "kitchen": "false",
    "study_room": [
    {
    "size": "20x30"
    },
    {
    "desk": true
    },
    {
    "lights": "On"
    }
    ]
    }}
      1. YAML

    YAML là một từ viết tắt của “YAML Ain’t Markup Language”. Theo trang web chính thức của YAML (https://yaml.org), YAML là một tiêu chuẩn đặc tả dữ liệu thân thiện với con người, được hỗ trợ bởi tất cả các ngôn ngữ lập trình. YAML là một ngôn ngữ diễn đạt dữ liệu được thiết kế để tương tác với con người. YAML là một tập hợp lớn hơn của JSON. Do đó, nó có thể thực hiện tất cả những gì mà JSON có thể thực hiện. Một sự khác nhau đáng kể là các dòng mới và các khoảng cách có ý nghĩa khác biệt trong YAML, trong khi JSON sử dụng các dấu ngoặc nhọn và các dấu ngoặc vuông cho cùng ý tưởng. YAML sử dụng ba dạng dữ liệu chính:
    • Scalars: Dạng đơn giản nhất là khóa- giá trị.
    • Lists/sequences: Dữ liệu có thể được sắp xếp bằng cách đánh số thứ tự.
    • Dictionary mappings: Tương tự như scalars nhưng có thể chứa các loại dữ liệu dạng lồng nhau (nested), bao gồm cả những loại dữ liệu khác.

    Ví dụ dưới đây mô tả một văn bản hiển thị ở dạng YAML.


    ---
    home:
    - this is my house
    - located in San Jose, CA
    rooms:
    living_room: 'true'
    kitchen: 'false'
    study_room:
    - size: 20x30
    - desk: true
    - lights: 'On'
      1. WEBHOOKS

    Lịch sử của các kỹ thuật giám sát mạng (monitoring) trải qua nhiều thế hệ. Ở thế hệ đầu tiên, các giao thức như ping, các kỹ thuật lập trình Expect được sử dụng để truy vấn thông tin và tình trạng của các hệ thống. Để giải quyết vấn đề cảnh báo, giao thức syslog được sử dụng. Giai đoạn thứ hai, giao thức SNMP Get và SNMP trap được sử dụng. Ở giai đoạn tự động hóa network automation hiện tại, các API được dùng như giao tiếp chủ chốt và Webhooks được dùng cho các cơ chế cảnh báo.
    Click image for larger version

Name:	dataurl599823.png
Views:	20
Size:	25.1 KB
ID:	437667

    Trong những năm gần đây, ngày càng có nhiều dịch vụ web hỗ trợ chức năng webhooks. Nói cách khác, mạng Internet là một hệ thống của các sự kiện, các biến cố xảy ra liên tục. Chúng ta không thể áp dụng các kỹ thuật cũ như polling hay SNMP traps để theo dõi các hệ thống. Thay vào đó, webhook sẽ được sử dụng.

    Chức năng chính của webhook là nó sẽ lưu ý bạn khi có một sự kiện xảy ra. Nếu bạn sử dụng tính năng webhook, bạn sẽ cần cung cấp một địa chỉ URI được dùng để máy chủ gọi lại. Dịch vụ webhook sẽ thực hiện một HTTP request đến địa chỉ URI đó mỗi khi có sự kiện xảy ra. Cơ chế này cho phép chúng ta viết thêm những đoạn chương trình để thực thi các hành động tiếp theo. Tất cả những gì chương trình chúng ta cần làm là lắng nghe các HTTP request được gọi đến một URI do chúng ta chỉ định.


    Webhooks là các cơ chế gọi lại callback dùng HTTP do người dùng định nghĩa. Một webhook được kích hoạt bởi một biến cố, một sự kiện chẳng hạn như có một đoạn mã nguồn code được thêm vào trong kho lưu trữ repository hay một từ khóa quan trọng nào đó được gõ trong cửa sổ chat.



    Vì sao chúng ta cần webhooks?

    Lý do chính mà chúng ta cần webhook là bởi vì chúng ta không muốn truy vấn (poll) liên tục một dịch vụ để tìm xem có sự cố nào xảy ra gần đây hay không. Cách sử dụng truy vấn polling làm lãng phí tài nguyên của cả máy chủ và của client. Một nhược điểm khác của kỹ thuật polling là có đôi khi thông tin hoặc tài nguyên mà chúng ta cần thì không có sẵn trong hệ thống, hoặc thông tin không có giá trị sử dụng. Giao thức tiêu biểu sử dụng kỹ thuật polling chính là SNMP.

    Webhook cũng giải quyết vấn đề một API kích hoạt một tác vụ chạy quá lâu, ví dụ như tác vụ chuyển đổi các định dạng media. Chúng ta không muốn để một kết nối đến một máy chủ mở trong một thời gian dài để chờ quá trình chuyển đổi định dạng hoàn thành. Thay vào đó, nếu có một thông báo là một tác vụ đã được chấp nhận và cho phép webhook thông báo khi một tác vụ hoàn tất.

    Một ví dụ sử dụng webhook là GitHub. GitHub cho phép bạn thiết lập các webhook để đăng ký theo dõi nhiều kiểu sự kiện mà bạn quan tâm. Giả sử bạn muốn được gửi một lưu ý khi có một người truy cập đến dự án hoặc mã nguồn của bạn trong Github, bạn có thể chỉ cho GitHub nơi mà webhook của bạn đang chạy (đang host). Bất cứ khi nào có một tham chiếu đến dự án của bạn trong GitHub, GitHUB sẽ thực hiện một HTTP request đến địa chỉ URI, cập nhật một thông tin ở định dạng JSON. Thông tin này dùng để mô tả sự kiện diễn ra trong GitHUB. Bên cạnh GitHUB, Webhook cũng được sử dụng rất nhiều trong các công cụ quản trị mạng và giám sát hệ thống như hình vẽ bên dưới.

    Click image for larger version

Name:	dataurl599831.png
Views:	15
Size:	32.4 KB
ID:	437670


    Ba thành phần chủ chốt tạo nên cơ chế webhook là HTTP được dùng như giao thức truyền vận, TLS được dùng như giao thức mã hóa, định dạng JSON được dùng như giao thức hiển thị dữ liệu.

    Click image for larger version

Name:	dataurl599827.png
Views:	13
Size:	20.9 KB
ID:	437668

    Một phần mềm ứng dụng sẽ hiện thực cơ chế webhook bằng cách gửi thông điệp POST đến một địa chỉ URL mà ở đó có một sự kiện cụ thể đang xảy ra. Webhooks cũng được gọi là API ngược (reverse API). Một cách chính xác hơn, một webhook cho phép chúng ta bỏ qua các bước trong chu kỳ request/response. Với webhook, chúng ta không cần thông điệp request nào. Một webhook sẽ gửi dữ liệu khi được kích hoạt.

    Vì lý do bảo mật, các dịch vụ REST có thể thực hiện vài phép kiểm tra để xác định xem bên máy nhận có phải là hợp lệ hay không. Một tiến trình bắt tay đơn giản có thể đáp ứng yêu cầu này, nhưng cách làm này chỉ giúp xác thực có một chiều.
    Máy chủ có thể dùng một token duy nhất được tạo ra bởi server. Các token có thể được tạo ra hay thu hồi từ phía máy chủ thông qua giao diện đồ họa UI. Khi máy chủ gửi dữ liệu đến webhook URI, nó sẽ bao gồm luôn token trong HTTP header của thông điệp request. Webhook URL sẽ bao gồm cùng một giá trị token trong thông điệp trả lời của HTTP response. Theo cách này, máy chủ sẽ biết nó đang gửi đến các địa chỉ client hợp lệ chứ không phải là các client không hợp lệ.
    Hình bên dưới mô tả một tiến trình của webhooks.
    Click image for larger version

Name:	dataurl599829.png
Views:	13
Size:	22.9 KB
ID:	437669

    Các công cụ được dùng khi viết webhooks

    Chúng ta sẽ đặc biệt gặp khó khăn khi phát triển một ứng dụng dùng webhooks. Khi sử dụng một dịch vụ công cộng cung cấp webhooks, bạn sẽ cần một địa chỉ URL dạng công cộng. Thông thường thì chúng ta phát triển các ứng dụng trên máy tính cá nhân localhost và phần còn lại của thế giới không thể truy cập đến ứng dụng của chúng ta. Vậy làm thế nào chúng ta kiểm tra webhooks?

    Công cụ ngrok (http://ngrok.com) là một công cụ miễn phí cho phép chúng ta tạo một đường hầm tunnel từ một URL đến ứng dụng mà chúng ta đang chạy cục bộ.


    Webhook là cơ chế giúp giám sát các hệ thống theo thời gian thực, hoạt động hướng về sự kiện, sử dụng HTTP/HTTPS và có định dạng JSON thân thiện với phần mềm. Để bảo mật, chúng ta được khuyến cáo sử dụng TLS. Chúng ta cũng nên kết hợp webhook với các đầu cuối API để giúp tự động hóa các công việc giám sát mạng.

Working...
X